我一直在研究与页面模块通信并遇到问题的上下文菜单。
只要我不刷新页面,我就可以通过右键单击向视图中的页面/选项卡发送通信。当我刷新页面时,会创建一个新的工作人员,并且上下文菜单无法与工作人员通信。
我现在有两个相同的工人,但就像旧的工人已经过期了。这意味着 onMessage: 中的这个循环不起作用,因为它选择了第一个工人。
for (index = 0; index < workers.length; index += 1) {
if (workers[index].tab.index === tabs.activeTab.index) {
workers[index].port.emit("rightClick", string, ss.storage.product);
}
}
我一直希望在刷新时删除旧工人,但似乎没有选择这样做。我是否从根本上错过了处理工人的一些事情?
我收到的错误是:错误:该页面当前处于隐藏状态,在再次可见之前无法使用。
这与就工人而言,我现在正在同一选项卡中查看新页面这一事实一致。我认为 worker.on('detach', function(){}) 应该处理这个问题,但似乎这只是在关闭选项卡时。
任何意见,将不胜感激。
稍作休息后添加OK 我决定使用其他地方推荐的 detachWorker 函数进行分离。我把它放在我的 pageMod 对象的顶部,如下所示
// Clean up duplicate worker
for (index in workers) {
if(workers[index].url === worker.url && workers[index].tab.index === worker.tab.index) {
detachWorker(workers[index], workers);
}
}
虽然我认为这不是正确的方法,但这解决了这个问题(目前)。解决方案的任何进展:)。