-
Notifications
You must be signed in to change notification settings - Fork 62
webview
molysama edited this page Oct 26, 2020
·
12 revisions
本模块封装了webview
的功能,并提供了比较便捷的双向通信功能。
Auto.pro部分版本的JavaAdapter
存在bug,无法正常使用webview
,目前已知无法使用的版本: Auto.pro 7.0.4-1 ~ Auto.pro 8.0.2。
npm i "@auto.pro/webview" -S
import core from "@auto.pro/core"
import { run } from "@auto.pro/webview"
core()
const htmlPath = 'http://www.baidu.com'
const wv = run(htmlPath)
// wv.on可以监听对应的prompt事件,这里监听一个prompt('submit')事件
wv.on('submit').subscribe(([param, done]) => {
// done必须要执行一次,括号内是给html的返回值,可以留空
done()
// 执行aj的代码
toastLog('点击了submit按钮')
})
- option.xmlString: string
可自定义webview的容器xml,默认为一个占全屏的webview - option.webviewId: string
当自定义webview的xml时,需要指定webviewId
,应与xml内webview的id一致,默认为webview
- option.afterLayout: Function
在布局初始化完毕后可使用此函数紧跟
run成功执行之后会得到一个对象,对象有以下方法和属性
on
可以监听到HTML发送的prompt
事件,下面是一个示例
//------------ html 部分 -------------
document.getElementById('btn').onclick = () => {
var params = { x: 1, y: 2 }
prompt('hello', JSON.stringify(params))
}
//---------------- auto 部分 --------------
const webview = run(htmlPath)
webview.on('hello').subscribe(([param, done]) => {
toastLog(`点击了登录按钮,获得参数${param}`)
// 使用done给html返回结果,这里返回获得的参数
done(param)
webview.runHtmlJS('document.title').subscribe(v => {
toastLog(`title is ${v}`)
})
})
点击HTML的btn
时,会发送一个prompt
事件,此时将触发auto对hello
的监听,并得到一个参数(params),如果hello
的回调有返回值,则HTML会获取到该值。这就是HTML向auto通信的过程。
取消对应on
的监听
此函数能使auto执行HTML的fnName
方法,返回一个Observable
对象。示例如下:
webview.runHtmlFunction('console.log', 'helloworld').subscribe(value => {
})
与runHtmlFunction
相似,但是它可以执行任意JS语句,比如获取网页的标题:
webview.runHtmlJS('document.title').subscribe(value => {
toastLog(`title is ${value}`)
})
指向对应webviewId
的auto对象
QQ交流群:1019208967 (^_^)