关闭镶边扩展程序中的当前选项卡
closing the current tab in a chrome extention
我正在编写一个 chrome 扩展程序,单击该扩展程序时,将在给定时间后关闭当前选项卡。
我正在发送一条带有时间的消息,从弹出窗口.js到后台.js。但选项卡不会关闭。当我取消注释时,警报有效,因此它似乎只是删除行。我认为这是关于tab.id
的事情.
chrome.extension.onMessage.addListener(
function message(request, sender, callback) {
var ctr = 0;
ctr = parseInt(request.text, 10);
setTimeout(function() {
chrome.tabs.getCurrent(function(tab) {
//window.alert("Working?");
chrome.tabs.remove(tab.id, function(){});
});
}, ctr);
}
);
1.
chrome.extension 没有onMessage
事件。我假设你的意思是正确的chrome.runtime.onMessage
阿拉伯数字。
您可能误解了(*)chrome.tabs.getCurrent的目的:
获取从中进行此脚本调用的选项卡。如果从非选项卡上下文(例如:背景页或弹出视图)调用,则可能未定义。
由于您是从非选项卡上下文(即背景页面)调用它的,因此tab
将是未定义的。
(*):"误解"如"懒得阅读手册"...
3.
目前尚不清楚是要在设置计时器的那一刻还是在触发定时关闭活动选项卡。(在您的代码中,您正在尝试执行后者,尽管前者对我来说更有意义。
正确的方法:
chrome.runtime.onMessage.addListener(function message(msg) {
var ctr = 0;
ctr = parseInt(msg.text, 10);
setTimeout(function() {
chrome.tabs.query({ active: true }, function(tabs) {
chrome.tabs.remove(tabs[0].id);
});
}, ctr);
});
另请注意,使用 setTimeout
和 setInteval
等函数只能在持久后台页面(而不是事件页面)中可靠地工作。如果可能,建议您迁移到事件页面(更"资源友好"),在这种情况下,您还必须切换到警报 API。
相关文章:
- 新选项卡被弹出窗口阻止程序阻止
- .aspx页面上引导程序中的动态选项卡
- 文本链接可更改引导程序选项卡
- 在日期更改后更新Angular UI引导程序日期选择器选项
- 引导程序动画选项卡内容脚本
- 如何启用Emmet'的选项卡键处理程序(HTML快捷方式)
- 在不同的选项卡中对Web应用程序的更改做出反应
- AngularJS单页应用程序中的Toggable选项卡
- PHP 应用程序中的选项卡 - 融合图表
- 焦点新选项卡的文本区域引导程序 3 + 角度JS
- 为什么所有链接都在带有引导程序的新选项卡中打开
- 如何隐藏和显示twitter引导程序选项卡
- 使用javascript在chrome浏览器的新选项卡中以程序方式打开URL
- 如何使用Javascript/jQuery将信息从查询字符串传递到Facebook中的页面选项卡应用程序
- Dojo,基本选项卡应用程序
- 在我的html页面-web应用程序用户界面的一个选项卡中的另一个html页面中的选项卡
- Facebook选项卡应用程序动态URL
- 调用ashx处理程序后关闭浏览器中的选项卡
- 选项卡中的嵌套选项卡选项卡中的选项卡引导程序
- 在HTML5、CSS、JavaScript中添加选项选择器,类似于移动应用程序中的选项设置