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