Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从新创建的选项卡访问safari扩展方法?_Javascript_Safari Extension - Fatal编程技术网

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

Javascript 如何从新创建的选项卡访问safari扩展方法?,javascript,safari-extension,Javascript,Safari Extension,我正在开发一个safari扩展。我成功地创建了一个全局页面,该页面对工具栏按钮的按下做出反应。此操作将在活动窗口中打开一个新选项卡 我现在的问题是:如何从新打开的浏览器选项卡中的全局页面访问定义的变量,该选项卡包含扩展名中的内容html文件?是否可以像popover那样共享变量和函数 safari.extension.globalPage.myFunction()不工作 谢谢 sn3ek内容脚本只能通过与全局页面通信 content.js global.js safari.self.addEve

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

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

safari.extension.globalPage.myFunction()不工作

谢谢
sn3ek

内容脚本只能通过与全局页面通信

content.js global.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);
    }
}
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);
    }   
}