safari扩展中的全局变量



如何在safari扩展中有一个全局变量,该变量可以从注入的脚本中加入,并且可以保存以供狩猎结束后的下一次发射。

我所说的全局是指静态。
以便所有注入的脚本访问该变量的同一版本,而不是每个注入的脚本都有自己的版本。
并且不像localStorage那样是按域的。

Safari扩展设置API可能是最好的选择。这与localStorage类似,并且可以通过safari.extension.settings访问。

但是,这不能直接从注入的脚本中访问,因此必须使用消息从全局页面传递数据。

在你的注入脚本中有这样的东西:

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做或多或少相同的事情,这样它就不局限于一个域的网页。

相关内容

  • 没有找到相关文章

最新更新