dispatchEvent
优质
小牛编辑
131浏览
2023-12-01
>= IOS 5.0
>= Android 5.0
使用说明 : 分发事件接口。抛出一个事件给客户端或者其他 WebView,可以用于 WebView 间通信,或者通知客户端对特殊事件做处理(客户端需要做相应开发)
参数
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
eventName | string | 是 | 事件名字 |
options | Object | 是 | 事件参数 |
echo | Boolean | 否 | 当前webview是否能收到这个事件,默认为true |
broadcast | Boolean | 否 | 是否广播模式给其他webview,默认为true |
domains | Array | 是 | 指定能接收到事件的域名,默认只有同域的webview能接收,支持通配符,比如".qq.com"匹配所有qq.com和其子域、""匹配所有域名。注意当前webview是否能接收到事件只通过echo来控制,这个domains限制的是非当前webview。 |
Example
//1. WebView 1(www.qq.com) 监听 hello 事件
mqq.addEventListener("hello", function(data, source){
console.log("someone says hi to WebView 1", data, source)
});
//2. WebView 2(www.tencent.com) 监听 hello 事件
mqq.addEventListener("hello", function(data, source){
console.log("someone says hi to WebView 2", data, source)
});
//3. WebView 2 抛出 hello 事件
//不传配置参数,默认只派发给跟当前 WebView 相同域名的页面, 也就是只有 WebView 2能接收到该事件(WebView 1 接收不到事件,因为这两个 WebView 的域名不同域)
mqq.dispatchEvent("hello", {name: "abc", gender: 1});
//echo 为 false, 即使 WebView 2 的域名在 domains 里也不会收到事件通知, 该调用的结果是 WebView 1 将接收到该事件
mqq.dispatchEvent("hello", {name:"alloy", gender:1}, {
//不把事件抛给自己
echo: false,
//广播事件给其他 WebView
broadcast: true,
//必须是这些域名的 WebView 才能收到事件
domains: ["*.qq.com", "*.tencent.com"]
});
//echo 和 broadcast 都为 false, 此时不会有 WebView 会接收到事件通知, 但是客户端仍会收到事件, 仍然可以对该事件做处理, 具体逻辑可以每个业务自己处理
mqq.dispatchEvent("hello", {name:"alloy", gender:1}, {
echo: false,
broadcast: false,
domains: []
});