gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:29:59 25 4
gpt4 key购买 nike

我正在开发一个 safari 扩展。我成功地创建了一个全局页面,它对按下工具栏按钮使用react。此操作会在事件窗口中打开一个新选项卡。

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

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

谢谢sn3ek

最佳答案

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

内容.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);
}
}

全局.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);
}
}

关于javascript - 如何从新创建的选项卡访问 Safari 扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23334603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com