我试图允许用户通过HTML首选项页面配置我的safari扩展(许多Safari扩展都可以)。我在全局html文件中的javascript调用中打开此页面:
var newTab = safari.application.activeBrowserWindow.openTab();
newTab.url = safari.extension.baseURI + "settings/settings.html";
我无法做的是将此settings.html
中的任何内容写入实际的Safari扩展程序设置或访问全局页面。
safari.extension.settings.MY_SETTINGS = settingsData;
safari.extension.globalPage
这两个调用都会导致异常,并且对象显示为未定义。
然后我也尝试发送消息,但似乎永远不会在全球空间接收它们,我认为我可以再次访问这些设置。
safari.self.tab.dispatchMessage("store_settings", settingsData); //settings javascript
我的事件监听器未收到这些消息。
safari.self.addEventListener("message", process_messages, false); //GLOBAL javascript
知道为什么我无法访问扩展程序设置?我是否需要为settings.html
初始化某些内容以便能够访问扩展程序设置?
PS:我在ClickToPlugin Safari扩展程序中看到了类似的方法 - 所以它应该是可行的,但是我无法让它工作:(
答案 0 :(得分:1)
在全局脚本中,尝试safari.application.addEventListener
。
答案 1 :(得分:1)
如果您的html页面是扩展程序的一部分,那么您的settings.js脚本文件将可以访问safari.extension.globalPage。此对象指向global.html的窗口。
从那里你可以调用该上下文中的任何对象。然而,对此进行调试至少可以说是痛苦。祝你好运: - )