检查Chrome中是否存在具有确切ID的Tab的最佳方法

Kon*_*nin 17 javascript google-chrome-extension

有时候选项卡ID存储在一个变量中,你需要检查选项卡是否仍然存在,然后再对其进行操作(因为用户可以随时关闭选项卡).我找到了这个解决方案:

chrome.tabs.get(1234567, function(tab) {
  if (typeof tab == 'undefined') {
    console.log('Tab does not exist!');
  }
});
Run Code Online (Sandbox Code Playgroud)

它有效,但它有很严重的缺点.它将错误消息写入控制台,如下所示:

tabs.get期间出错:没有标识为1234567的标签.

这也不例外.所以try/catch无济于事.这只是控制台中的一条消息.

有任何想法吗?

更新:此错误现在看起来像"运行tabs.get时未检查runtime.lastError:没有标识为1234567的选项卡".

ang*_*inb 18

function callback() {
    if (chrome.runtime.lastError) {
        console.log(chrome.runtime.lastError.message);
    } else {
        // Tab exists
    }
}
chrome.tabs.get(1234,callback);
Run Code Online (Sandbox Code Playgroud)

Chrome扩展程序错误:"运行browserAction.setIcon时未选中runtime.lastError:没有带标识的选项卡"

编辑:

Chrome会检查是否在回调中检查了chrome.runtime.lastError的值,并为此"未处理的异步异常"输出控制台消息.如果你检查它,它不会污染控制台.

来自@Xan的评论