safari扩展中的全局变量

时间:2014-10-23 12:06:46

标签: javascript safari global-variables safari-extension

如何在 safari扩展中创建一个可以从注入的脚本加入的全局变量, 并且可以在safari关闭后保存以供下次发布。

通过全球我的意思是静态的。
以便所有注入的脚本访问该变量的相同版本,而不是每个注入的脚本都拥有它。
而不是每个域的 localStorage

1 个答案:

答案 0 :(得分:4)

Safari extension settings API可能是最好用的。这与localStorage类似,可以通过safari.extension.settings访问。

但是,这不能直接从注入的脚本访问,因此您必须use messages to pass data from a global page

在您注入的脚本中有类似的内容:

safari.self.addEventListener('message', handleMessage, false);

safari.self.tab.dispatchMessage('getSetting', 'myVar');

function handleMessage(msg) {
    if (msg.name === 'returnSetting') {
        var setting = msg.message;
    }
}

在您的全球网页中:

safari.application.addEventListener('message', handleMessage, false);

function handleMessage(msg) {
    if (msg.name === 'getSetting') {
        var setting = safari.extension.settings(msg.message);
        safari.application.activeBrowserWindow.activeTab.page.dispatchMessage('returnSetting', setting);
    }
}

或者,您可以在全局页面的域内使用localStorage做同样的事情,因此它不限于一个域的网页。