我正在使用 XUL Overlay 开发一个 Firefox 插件,并希望在输入 URL 后加载当前页面时调用特定的 js。我想知道哪个 XUL 元素会受到影响并且应该用于调用所述 JS,例如页面或选项卡或窗口或 ??? 另外,哪个事件最适合该元素?还是我的逻辑错了?此外,js 的功能是记录标签标题和/或 url,所以我需要知道何时调用 js 以及相应的事件。谢谢.. :)
问问题
471 次
1 回答
0
您应该注意的 XUL 元素是tabbrowser。在浏览器窗口中(这也意味着在应用到浏览器窗口的叠加层中)可以通过全局gBrowser
变量访问它。如果您想知道页面何时完成加载,您可以收听该DOMContentLoaded
事件。像这样的东西(未经测试的代码):
// Declare an own namespace for extension's functions to avoid
// name conflicts with other extensions.
var MyExtension = {};
MyExtension.init = function()
{
gBrowser.addEventListener("DOMContentLoaded", MyExtension.onPageLoad, false);
};
MyExtension.onPageLoad = function(event)
{
// Get the document that loaded
var doc = event.originalTarget;
// Ignore frames that load
if (doc.defaultView != doc.defaultView.parent)
return;
// Ignore if this isn't the active tab
var browser = gBrowser.getBrowserForDocument(doc);
if (browser != gBrowser.selectedBrowser)
return;
alert("Page loaded in current tab: " + doc.defaultView.location.href);
};
// Wait for the browser window to finish loading before adding event listeners
window.addEventListener("load", MyExtension.init, false);
如果您想更早地得到通知,当 URL 栏中显示的地址发生变化时,您可以使用进度侦听器来代替。您想实现onLocationChange
进度侦听器的方法并将其他方法留空。请注意,当用户切换到不同的选项卡时也会调用此方法(这也会导致位置栏发生变化)。另外:aURI
传递给的参数onLocationChange
是一个nsIURI
实例。如果您希望将 URL 作为字符串,您应该查看aURI.spec
.
于 2012-04-19T19:15:50.147 回答