能否通过chrome.tabs.query()方法仅查询Chrome新标签页?
解答
不能仅通过chrome.tabs.query()的queryInfo内置配置直接筛选出新标签页(new tab),官方提供的queryInfo参数里确实没有对应这个筛选需求的键,需要先查询拿到标签列表后,自行做二次匹配判断。
新标签页的匹配规则
你可以结合以下特征做判断,覆盖绝大多数场景:
- Chrome原生新标签页加载完成后,
tab.url固定为chrome://newtab/ - 刚打开尚未完成加载的新标签页,
tab.pendingUrl属性值为chrome://newtab/,此时tab.url可能为空字符串 - 如果用户安装了第三方扩展替换默认新标签页,可以追加对应扩展页面的地址匹配规则,这类页面地址一般以
chrome-extension://开头 - 不建议仅通过
tab.title判断,不同语言版本的Chrome新标签页标题文本不同,很容易出现漏判、错判
实现示例
// 查询当前窗口的全部标签 chrome.tabs.query({ currentWindow: true }, (tabs) => { const newTabList = tabs.filter(tab => { const targetUrl = tab.url || tab.pendingUrl || ''; // 此处可按需追加自定义新标签页的url匹配规则 return targetUrl === 'chrome://newtab/'; }); // newTabList就是所有匹配到的新标签页 console.log(newTabList); });

内容的提问来源于stack exchange,提问作者Mohammad Faisal
相关产品推荐
相关产品推荐

