如何检测调试扩展选项卡?

时间:2017-02-24 13:19:18

标签: javascript google-chrome-extension

在构建我的Chrome扩展程序时,打开新的浏览器标签并将其粘贴到其中通常非常有用:

chrome-extension://xyzfegpcoexyzlibqrpmoeoodfiocgcn/popup.html

当我这样做时,我能够在不关闭的情况下使用我的弹出式UI,而无需点击右上方的扩展图标,并且弹出窗口有时会关闭。

问题在于:我需要我的js(由popup.html引用)来了解我是否在此调试标签中,或者它是否在"常规模式和" #34; (单击扩展图标并正常运行)。我第一次尝试这个:

var isDebugExtensionTab = (location.href.indexOf("chrome-extension:") == 0);

这不起作用,因为它总是评估为真 - 在所有情况下都是location.href,调试标签或常规模式。

如何检测差异?

1 个答案:

答案 0 :(得分:2)

使用chrome.tabs.getCurrent

  

获取此脚本调用的选项卡。如果从非选项卡上下文调用(例如:后台页面或弹出视图),则可能未定义。

var isDebugExtensionTab = false;
chrome.tabs.getCurrent(function(tab) { isDebugExtensionTab = !!tab; });

它是异步的,因为所有chrome。* API方法都可以接受回调,因此在当前上下文退出之前结果将不可用。如果您需要立即使用该值,请在回调中执行:

var isDebugExtensionTab = false;
chrome.tabs.getCurrent(function(tab) {
    isDebugExtensionTab = !!tab;
    runSomeDebugFunction();
});