0

リクエストがウェブサイトに送信される前にURL文字列を取得する方法はありますか?私はここでそれについての投稿を見つけました:

https://forums.mozilla.org/addons/viewtopic.php?f=7&t=11259&p=26111

しかし、アドオンSDKで「Browser:OpenLocationコマンドにフックする」方法については何も見つかりませんでした。

基本的に私がしていることはこれです:

  1. 要求されようとしているURLをチェックして、それが私の正規表現と一致するかどうかを確認します。
  2. 一致する場合は、Webサイトに送信されるuserAgentを変更します。(general.userAgent.overrideを設定することにより)

したがって、リクエストはすでに送信されているため、ページの読み込み開始後にURLを確認できません。また、閲覧が遅れるため、ページを再読み込みしたくありません。

ありがとう!

4

1 に答える 1

1

はい、こちらのドキュメントを確認してください: https ://developer.mozilla.org/en-US/docs/XUL/School_tutorial/Intercepting_Page_Loads#HTTP_Observers

このコードはアドオンSDKで機能し、URLが一致することを確認してから、そのサイトだけにUser-Agentをmysite設定します。MyBrowser/1.0これは、pref userAgent.orverrideを使用せずに、検出された場合にのみ変更を行います。

var chrome = require("chrome");

chrome.Cc["@mozilla.org/observer-service;1"].getService( chrome.Ci.nsIObserverService ).addObserver({
    observe : function(subject, topic, data) {
            var channel = subject.QueryInterface( chrome.Ci.nsIHttpChannel );
            if ( /mysite/.test( channel.originalURI.host ) ) {
                channel.setRequestHeader("User-Agent", "MyBrowser/1.0", false);
            }
    }
},"http-on-modify-request",false);
于 2013-02-21T21:57:49.000 に答える