在构建我的Chrome扩展程序时,打开新的浏览器标签并将其粘贴到其中通常非常有用:
chrome-extension://xyzfegpcoexyzlibqrpmoeoodfiocgcn/popup.html
当我这样做时,我能够在不关闭的情况下使用我的弹出式UI,而无需点击右上方的扩展图标,并且弹出窗口有时会关闭。
问题在于:我需要我的js(由popup.html引用)来了解我是否在此调试标签中,或者它是否在"常规模式和" #34; (单击扩展图标并正常运行)。我第一次尝试这个:
var isDebugExtensionTab = (location.href.indexOf("chrome-extension:") == 0);
这不起作用,因为它总是评估为真 - 在所有情况下都是location.href
,调试标签或常规模式。
如何检测差异?
答案 0 :(得分:2)
获取此脚本调用的选项卡。如果从非选项卡上下文调用(例如:后台页面或弹出视图),则可能未定义。
var isDebugExtensionTab = false;
chrome.tabs.getCurrent(function(tab) { isDebugExtensionTab = !!tab; });
它是异步的,因为所有chrome。* API方法都可以接受回调,因此在当前上下文退出之前结果将不可用。如果您需要立即使用该值,请在回调中执行:
var isDebugExtensionTab = false;
chrome.tabs.getCurrent(function(tab) {
isDebugExtensionTab = !!tab;
runSomeDebugFunction();
});