如何从新创建的选项卡访问safari扩展方法?

时间:2014-04-28 07:06:15

标签: javascript safari-extension

我正在开发一个safari扩展。我成功创建了一个响应工具栏按钮的全局页面。此操作将在活动窗口中打开一个新选项卡。

我现在的问题是:我如何从新打开的浏览器选项卡中的全局页面访问定义的变量,该选项卡包含扩展名中的内容html文件?是否有可能像popover那样共享变量和函数?

safari.extension.globalPage.myFunction();不起作用......

由于 sn3ek

1 个答案:

答案 0 :(得分:2)

内容脚本只能通过message passing与全局页面进行通信。

content.js

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);
    }
}

global.js

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);
    }   
}