从网页到Safari扩展的JavaScript

时间:2016-01-29 15:31:27

标签: safari-extension

网页可以直接与JavaScript级别的Safari扩展程序通信吗?

理想情况下,我想在扩展程序的全局页面中调用JavaScript,但是与注入的脚本交谈也可以,因为它可以通过消息与全局页面通信。

直接函数调用不起作用。页面和注入的脚本具有的select from table where ([]colA;colB) in ([]colA:`A`C;colB:`B`D) 对象是不同的。 window不适用于常规网页。在网页代码可见的其他DOM对象中是否有safari.self

1 个答案:

答案 0 :(得分:1)

找到了一个笨拙的解决方法。注入的脚本和页面共享document对象。注入的脚本将在页面中创建一个HTML元素(在我的情况下为<input type="hidden">),给它一个商定的ID,并挂钩它的onclick。页面将按ID找到该元素并调用onclick,并传递一些参数。注入的脚本获得控制权。对于脚本到页面的回调,我在同一个元素上使用onchange

调用是同步的,甚至是。

然后,注入的脚本会使用safari.self.tab.dispatchMessage()将消息传递到扩展程序的全局页面。