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