autojs的webView实现,支持初始化脚本注入、jsBridge两端互调
- 1 支持启动时注入自定义JavaScript脚本
- 2 webview输出到autojs控制台
- 3 支持渲染markdown文件
- 4 支持jsBridge,H5端调用安卓端autojs方法
- 5 支持inent url打开app页面
- 6 支持vconsole
- 存在部分页面不兼容vsconsole,如:https://m.baidu.com/ https://github.com/
- 7 支持debug模式
- 需要在电脑Chrome内核浏览器上访问 chrome://inspect/#devices
autojs-webView
├── LICENSE
├── README.md
├── expand --------------------------------------> webView扩展功能目录
│ ├── core ------------------------------------> webView扩展核心目录
│ │ ├── jsBridge.ts ------------------------->
│ │ ├── vConsole.ts ------------------------->
│ │ ├── vconsole.min.ts --------------------->
│ │ └── webViewExpand.js --------------------> webView扩展API
│ ├── handler --------------------------------->
│ │ ├── bridgeHandler.js --------------------> autoJs提供给网页调用的方法
│ │ └── webErrorHandler.js ------------------>
│ └── inject ----------------------------------> 页面注入JavaScript脚本文件
│ └── demo.ts -----------------------------> 页面注入JavaScript脚本例子
├── main.js ------------------------------------->
└── project.json -------------------------------->
初始化扩展支持,页面加载完时注入脚本
- webViewWidget: webView组件
- jsFileList: 待注入的多个脚本文件路径,数组格式
- supportVConsole: 是否支持VConsole, 默认false
webView渲染MarkDown文件,基于 markedjs 实现
- markdownFilePath: markdown文件绝对路径
autoJs在网页执行JavaScript代码
- webViewWidget: webView组件
- script: JavaScript脚本
- callback: 执行完回调函数
扩展对出入参的数据格式都规定为JSON,这里只需要定义JSON的数据结构即可
在 bridgeHandler.js 中定义,并注册到 module.exports 中 例如
/**
* 处理逻辑例子: toast 提示
*/
function toastAction(params) {
toast(params.msg);
return {msg: 'toast提示成功'};
}
module.exports = {
handle: handle,
// 注册被调用方法
toast: toastAction
}
webViewExpand.init(ui.webView, ["expand/inject/demo.ts"], true);
"ui";
ui.layout(
<vertical>
<webview id="webView" layout_below="title" w="auto" h="auto" />
</vertical>
);
// 在页面中调用autoJs方法
let js = "try{window.Android.invoke('toast', " +
"{msg: '测试jsBridge1'}, " +
"(data) => {" +
" console.log('接收到callback1:' + JSON.stringify(data));" +
"}" +
");}catch(e){console.trace(e)}";
let webViewExpand = require("expand/core/webViewExpand.js");
// 开启webView扩展
webViewExpand.init(ui.webView, [], true);
// 加载页面 */
ui.webView.loadUrl("https://cn.bing.com/");
// 等待页面加载完,或是在init方法中注入JavaScript脚本文件触发执行
setTimeout(() => {
webViewExpand.callJavaScript(ui.webView, js);
}, 2000);