Chrome扩展程序:通过邮件传递检测标签关闭

时间:2017-01-10 18:36:38

标签: javascript google-chrome google-chrome-extension tabs message-passing

我正在构建一个仅适用于特定域的简单chrome扩展,现在我正面临在后台页面中检测选项卡关闭的问题。正如我所读到的,没有特定的方法来实现它,但是window.unonload和window.onbeforeunload可以帮助检测页面变量(尽管如果重新加载页面它们也会被触发)。但是,由于扩展程序被编程为在同一个选项卡中工作,但它必须多次重新加载页面,对我的情况来说这将是一个糟糕的解决方案。所以这就是我的想法:

1 - 在执行的最开始,内容脚本向backpage发送一条消息,该消息现在能够检测发送方tab标识并将其存储到全局变量中。

2 - 然后,backpage应该以编程方式检查那个 id的标签当前是否打开,例如在while循环或类似的情况下。

3 - 当控件返回false时,backpage将知道页面已关闭且扩展程序未运行。

这个似乎是一个简单而简短的方法来检查页面是否打开,但是我找不到一种方法来让backpage确定是否打开了具有特定ID的选项卡。我还阅读了chrome文档(https://developer.chrome.com/extensions/tabs),但听起来没有特定的功能来执行此操作。所以我想知道的是:解决这个问题的解决办法是什么?消息传递可能有用吗? 附:我没有使用jquery。

感谢您的帮助。

*编辑:** 我忘了说我已经尝试过这段代码,但它没有改变运行变量 的 background.js

var running;
while (0!=1){
chrome.runtime.sendMessage(idtab, {quest: "running"}, function(response) {
if (response.ans!="yep"){
running=false;
}
});
}

content_script

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse)    {
if (request.quest=="running"){
    sendResponse({ans:"yep"});
}
});
背景中的 idtab 变量之前已定义,并且它已包含脚本在其中工作的选项卡的ID

0 个答案:

没有答案