我正在开发一个safari扩展。我成功创建了一个响应工具栏按钮的全局页面。此操作将在活动窗口中打开一个新选项卡。
我现在的问题是:我如何从新打开的浏览器选项卡中的全局页面访问定义的变量,该选项卡包含扩展名中的内容html文件?是否有可能像popover那样共享变量和函数?
safari.extension.globalPage.myFunction();
不起作用......
由于 sn3ek
答案 0 :(得分:2)
内容脚本只能通过message passing与全局页面进行通信。
safari.self.addEventListener('message', handleMessage, false);
// Send a message to the global page
safari.self.tab.dispatchMessage('requestVariables');
// Receive a message back from the global page
function handleMessage(msg) {
if (msg.name === 'returnVariables') {
console.log(msg.message);
}
}
safari.application.addEventListener('message', handleMessage, false);
// Receive a message from the injected script
function handleMessage(msg) {
if (msg.name === 'requestVariables') {
var message = {prop: 'val'};
safari.application.activeBrowserWindow.activeTab.page.dispatchMessage('returnVariables', message);
}
}