2015-04-01 126 views
4

我想让用户通过HTML首选项页面配置我的safari扩展(如许多Safari扩展所做的那样)。我打开从javascript调用该页面My全局HTML文件中:如何从全局范围之外访问Safari扩展设置?

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的扩展中工作 - 所以它应该是可能的,但我不能让它的工作:(

回答

1

在全局脚本,尽量safari.application.addEventListener

1

如果你的HTML页面扩展的一部分,那么你的settings.js脚本文件将有机会获得safari.extension.globalPage这个对象指向你global.html的窗口。

从那里,你可以调用任何在这种情况下,调试这个是一件痛苦的事情,至少可以说。祝你好运:-)