【问题标题】:Firefox addon progress listenerFirefox 插件进度监听器
【发布时间】:2013-04-02 15:18:15
【问题描述】:

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

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。这可能吗?

【问题讨论】:

  • 在 Chrome 浏览器中,我可以使用 webRequest.onBeforeRequest 来实现这一点。 chrome.webRequest.onBeforeRequest.addListener(function(details) { last_url = details.url; } }, {urls: [], types: ["main_frame"]});
  • 您是说您找到了解决方案或解决方法吗?如果是这样,那么您应该将其作为答案发布并接受。如果不能,请回复此评论。
  • 不,我仍在寻找解决方案。这就是 chrome 浏览器如何处理我在 Firefox 中尝试做的事情。不知道这是否能帮助任何人回答我的问题。

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


【解决方案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。

【讨论】:

  • 当我运行这段代码时,什么也没发生。它没有提醒任何 URL
猜你喜欢
  • 2015-04-04
  • 2023-03-14
  • 2014-11-12
  • 1970-01-01
  • 1970-01-01
  • 2012-03-01
  • 2011-02-16
  • 1970-01-01
  • 2015-03-31
相关资源
最近更新 更多