Firefox插件进度监听器

时间:2013-04-02 15:18:16

标签: firefox-addon http-status-code-302

我正在使用此页面来实现地址栏更改侦听器。

https://developer.mozilla.org/en-US/docs/Code_snippets/Progress_Listeners#Example.3a_Notification_when_the_value_in_Address_Bar_changes

此代码执行它应该执行的操作。当我导航到新页面时,它会提醒URL。但是,如果我拥有的URL是302或类似的,则会导致问题。它会提醒重定向的URL而不是原始URL。在将请求发送到服务器并发生重定向之前,我需要URL。这可能吗?

1 个答案:

答案 0 :(得分:1)

我认为你可以通过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,其属性 name 是请求的URL。