我正在使用此页面来实现地址栏更改侦听器。
这段代码做了它应该做的事情。当我导航到新页面时,它会提醒 URL。但是,如果我拥有的 URL 是 302 或类似的,则会导致问题。它会提醒重定向的 URL 而不是原始 URL。在将请求发送到服务器并进行重定向之前,我需要 URL。这可能吗?
我正在使用此页面来实现地址栏更改侦听器。
这段代码做了它应该做的事情。当我导航到新页面时,它会提醒 URL。但是,如果我拥有的 URL 是 302 或类似的,则会导致问题。它会提醒重定向的 URL 而不是原始 URL。在将请求发送到服务器并进行重定向之前,我需要 URL。这可能吗?
我认为您可以通过 onStateChange 事件进行检查。
var myExtension = {
oldURL: null,
init: function() {
gBrowser.addProgressListener(this);
},
uninit: function() {
gBrowser.removeProgressListener(this);
},
processNewURL: function() {},
// nsIWebProgressListener
QueryInterface: XPCOMUtils.generateQI(["nsIWebProgressListener",
"nsISupportsWeakReference"]),
onLocationChange: function(aProgress, aRequest, aURI) {
this.processNewURL(aURI);
},
onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus) {
if (!aRequest) return;
if (aStateFlags & nsIWebProgressListener.STATE_START) {
alert(aRequest.name);
},
onProgressChange: function() {},
onStatusChange: function() {},
onSecurityChange: function() {}
};
window.addEventListener("load", function() { myExtension.init() }, false);
window.addEventListener("unload", function() { myExtension.uninit() }, false);
在此处查看更多信息:https ://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIRequest
aRequest
是一个 nsIRequest,其属性名称是请求的 URL。