dispatchEvent

优质
小牛编辑
128浏览
2023-12-01

>= IOS 5.0 >= Android 5.0

使用说明 : 分发事件接口。抛出一个事件给客户端或者其他 WebView,可以用于 WebView 间通信,或者通知客户端对特殊事件做处理(客户端需要做相应开发)

参数

名称类型必选描述
eventNamestring事件名字
optionsObject事件参数
echoBoolean当前webview是否能收到这个事件,默认为true
broadcastBoolean是否广播模式给其他webview,默认为true
domainsArray指定能接收到事件的域名,默认只有同域的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: []
 });