作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个 Firefox 扩展。我希望在新标签页打开时执行我的代码。
我已经试过了:
for (var i=0; i<Application.windows.length; i++) {
var w = Application.windows[i];
w.events.addListener("TabOpen", function(event){
alert( 'tab #'+w.activeTab.index +' opened');
});
}
如果 windows.length > 1 则不能正常工作。例如,我们有两个窗口。我打开新选项卡,每个窗口都会触发 2 次事件。我只想为当前窗口调用一个事件。
最佳答案
没有燃料:https://developer.mozilla.org/en/Code_snippets/Tabbed_browser#Notification_when_a_tab_is_added_or_removed .与使用 Application.activeWindow
相比,我更喜欢它,因为从查看代码来看,无法保证 activeWindow
始终指代您的代码在其中执行的同一窗口。(如果它们不同,你最终会遇到难以重现的问题)。
您的原始代码不起作用的原因可能是您将代码放在脚本中以覆盖主浏览器窗口。此类代码在用户打开的浏览器窗口的每个实例中执行。因此,当您打开第二个窗口时,循环再次执行并为第一个窗口添加第二个监听器,为第二个窗口添加第一个(唯一)监听器。
关于javascript - 如何将事件 'TabOpen' 添加到 Firefox 扩展中的所有窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1558839/
我正在编写一个 Firefox 扩展。我希望在新标签页打开时执行我的代码。 我已经试过了: for (var i=0; i 1 则不能正常工作。例如,我们有两个窗口。我打开新选项卡,每个窗口都会触发
我是一名优秀的程序员,十分优秀!