编程语言
首页 > 编程语言> > javascript-野生动物园扩展名中的全局变量

javascript-野生动物园扩展名中的全局变量

作者:互联网

我该如何在safari扩展名中添加一个全局变量,该变量可以从注入的脚本中获取,
并可以在野生动物园关闭后保存以供下次发射.
从整体上讲,我的意思是静态的.
因此,所有注入的脚本都访问该变量的相同版本,而不是每个注入的脚本都拥有自己的变量.
与每个域的localStorage不同.

解决方法:

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或多或少执行相同的操作,因此它不仅限于一个域的网页.

标签:safari-extension,global-variables,safari,javascript
来源: https://codeday.me/bug/20191029/1956855.html