xra*_*alf 4 events firefox-addon
我正在寻找一个能够在浏览器中单击(更改)选项卡后运行一些代码的事件,但我还没有找到它.
是否有可能以某种方式实现这一事件?
我已经在听DOMContentLoaded事件,我在状态栏上显示有关当前页面的一些信息.当我更改选项卡时,状态栏中的信息不正确(我必须重新加载页面).
谢谢
有两种可能的方法可以做到这一点.
该nsIWebProgressListener接口用于当窗口的位置发生了变化来检测.在你的窗口onLoad处理程序中放置这样的东西:
// implements nsIWebProgressListener
var listener = {
onLocationChange: function(aProgress, aRequest, aURI) {
// fires on tab change; update status here;
// get the currently selected tab
var currDoc = gBrowser.contentDocument;
},
onStateChange: function(a, b, c, d) {},
onProgressChange: function(a, b, c, d, e, f) {},
onStatusChange: function(a, b, c, d) {},
onSecurityChange: function(a, b, c) {}
}
gBrowser.addProgressListener(
listener,
Components.interfaces.nsIWebProgress.NOTIFY_LOCATION);
Run Code Online (Sandbox Code Playgroud)
请注意,onLocationChange每次窗口位置发生变化时都会触发.这意味着它会在浏览器启动,当前选项卡中加载新URL,选项卡更改等时触发.如果您的目标是根据当前加载状态更新状态栏,这可能就是您想要的. URL.
要仅检测选择新选项卡的情况,请使用该TabSelect事件.从这里复制的完整示例:
function exampleTabSelected(event) {
var browser = gBrowser.selectedBrowser;
// browser is the XUL element of the browser that's just been selected
}
// During initialisation
var container = gBrowser.tabContainer;
container.addEventListener("TabSelect", exampleTabSelected, false);
// When no longer needed
container.removeEventListener("TabSelect", exampleTabSelected, false);
Run Code Online (Sandbox Code Playgroud)