如何从全局范围之外访问Safari扩展设置?

时间:2015-04-01 22:39:39

标签: javascript safari-extension

我试图允许用户通过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扩展程序中看到了类似的方法 - 所以它应该是可行的,但是我无法让它工作:(

2 个答案:

答案 0 :(得分:1)

在全局脚本中,尝试safari.application.addEventListener

答案 1 :(得分:1)

如果您的html页面是扩展程序的一部分,那么您的settings.js脚本文件将可以访问safari.extension.globalPage。此对象指向global.html的窗口。

从那里你可以调用该上下文中的任何对象。然而,对此进行调试至少可以说是痛苦。祝你好运: - )