SafariExtension messageEvent

时间:2011-08-26 23:17:03

标签: safari-extension safari

我正在尝试制作一个SafariExtension,但我对消息传递Api有一些问题,实际上doc中的示例不起作用,这个:Safari Message Proxies

那么什么工作,什么不起作用?  我可以从注入的脚本调用全局页面上的函数。  我无法发送对注入脚本的响应。

这里有我的:

注射:

safari.self.tab.dispatchMessage("foo", "bar");

不需要更多,这个bug在全局html中。

全局:

safari.application.addEventListener("message", function ( e ) {
 if (e.name != 'foo')
   return false;
 e.target.page.dispatchMessage("bar", 'foo'); <-- Undefined on page ...
},false);

因为我提到全局页面上的第4行总是失败,所以我无法发回答案 注入脚本......

对文档没有任何线索,因为这几乎是从文档中提取的。

1 个答案:

答案 0 :(得分:0)

您需要在目标页面中包含一个侦听器。例如......

safari.self.addEventListener("message", function(e) {
    if(e.name == 'bar') {
        alert(e.message);
        // 'foo' would be alerted to the user, as it is the message content.
    };
}, false);

消息是单向事务,因此向全局页面发送消息并在目标页面上接收消息是两个完全独立的事件。交易双方都需要听众。