gpt4 book ai didi

safari-extension - 将消息从 safari 扩展弹出窗口发送到全局页面

转载 作者:行者123 更新时间:2023-12-05 01:08:53 25 4
gpt4 key购买 nike

我有一个需要与其全局页面通信的 Safari 扩展弹出框。从我正在使用的内容脚本

safari.self.tab.dispatchMessage(name,data); 

来实现这一点。从弹出窗口中我没有找到办法做到这一点。我知道我可以直接访问全局页面中的方法
safari.extension.globalPage.contentWindow

但我的目标是重用已经在内容脚本中使用的代码片段。我对插件的chrome版本做同样的事情。

是否有模拟的聪明代理的代码
safari.self.tab.dispatchMessage(name,data); 

从弹出窗口?

最佳答案

老实说,在弹出窗口和注入(inject)脚本中使用不同的代码可能更容易。如果你真的想要,你可以这样做:

function dispatchMessage(name, message) {
if (safari.self.tab) {
safari.self.tab.dispatchMessage(name, message);
} else if (safari.extension.globalPage.contentWindow) {
safari.extension.globalPage.contentWindow.handleMessage({name: name, message: message});
}
}

然后只需使用 dispatchMessage('foo', 'bar')在您的弹出窗口和注入(inject)脚本中。虽然有点 hacky,因为 message 事件对象通常比 name 包含更多的信息。和 message ,并且您必须确保您的 handleMessage函数实际上与分配给 message 的函数相同。全局页面中的事件监听器。

关于safari-extension - 将消息从 safari 扩展弹出窗口发送到全局页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16529128/

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