繁体   English   中英

如何从新创建的标签访问safari扩展方法?

[英]How to access the safari extension methods from a newly created tab?

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

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

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

谢谢sn3ek

内容脚本只能通过消息传递与全局页面进行通信。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM