shi*_*zou 2 javascript google-chrome google-chrome-extension
这是在继续:在 Chrome 中关闭当前选项卡的脚本
我现在正在尝试使用扩展程序而不是 tampermonkey 脚本来执行此操作,"matches" : ["*://*.youtube.com/*", "*://youtube.com/*"],我的清单文件中有该脚本,并且 js 脚本只是简单的chrome.tabs.remove(tab.id);或者window.close();但两者都不会关闭我打开的 youtube.com 页面。
是否也无法关闭带有扩展名的选项卡?
chrome.tabs 对内容脚本不可用,因此如果它在您的代码中,它会因异常而失败。
window.close 有一个警告:
仅允许为使用该
window.open()方法的脚本打开的窗口调用此方法。如果窗口不是由脚本打开的,JavaScript 控制台中会出现以下错误:脚本可能不会关闭不是由脚本打开的窗口。
我不确定它是否适用于内容脚本 - 但假设它适用。
您可以通过添加后台脚本(可以访问chrome.tabs)并从那里检测导航,或者只是从上下文脚本中向后台脚本发送消息来使其工作。
后台留言:
// Content script
chrome.runtime.sendMessage({closeThis: true});
// Background script
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
if(message.closeThis) chrome.tabs.remove(sender.tab.id);
});
Run Code Online (Sandbox Code Playgroud)
我建议添加"run_at": "document_start"到内容脚本的配置中,以便更早地触发。
更好的是,您不需要内容脚本。您可以依赖chrome.tabs事件或chrome.webNavigationAPI。您可能需要主机权限(例如"*://*.youtube.com/*")才能工作("webNavigation"如果您使用它)。
| 归档时间: |
|
| 查看次数: |
4004 次 |
| 最近记录: |