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

Javascript 如何从全局范围之外访问Safari扩展设置?,javascript,safari-extension,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扩展

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

在全局脚本中,尝试
safari.application.addEventListener
如果html页面是扩展的一部分,则settings.js脚本文件将访问safari.extension.globalPage。此对象指向global.html的窗口

从那里,您可以调用该上下文中的任何对象。不过,调试它至少是一件痛苦的事情。祝您好运:-)