如何在 safari扩展中创建一个可以从注入的脚本加入的全局变量,
并且可以在safari关闭后保存以供下次发布。
通过全球我的意思是静态的。
以便所有注入的脚本访问该变量的相同版本,而不是每个注入的脚本都拥有它。
而不是每个域的 localStorage 。
答案 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做同样的事情,因此它不限于一个域的网页。