我正在尝试允许用户通过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扩展中看到了一个类似的方法-所以它应该是可能的,但我不能让它工作:(
发布于 2015-04-02 22:09:48
在全局脚本中,尝试safari.application.addEventListener。
发布于 2015-06-07 15:57:57
如果您的html页面是扩展的一部分,那么您的settings.js脚本文件将可以访问safari.extension.globalPage。该对象指向global.html的窗口。
从那里,您可以调用该上下文中的任何对象。然而,至少可以说,调试这一点是一件痛苦的事情。祝你好运:-)
https://stackoverflow.com/questions/29402082
复制相似问题