0

Chrome の webRequest を使用して URL に変数を追加する実験を試みています。JavaScript はとてもシンプルです。

chrome.webRequest.onBeforeRequest.addListener(
  function(details) {
    var url = details.url + '?tag=test';
    return {redirectUrl: url};
  },
{urls: ["<all_urls>"]},
["blocking"]);

ただし、任意のドメインに適用すると、変数の少なくとも 2 倍の結果が得られます。直接ナビを使用して cnn.com でテストしたところ、実際に変数が 4 回追加されました。

関連するマニフェストの抜粋を次に示します。

"permissions": [
    "webRequest", "*://*.letags.com/*", "webRequestBlocking"
  ],

ブラウザーとサーバーの間でラウンドトリップが発生しているため、サーバーは実際に表示する前に URL を拡張機能にフィードバックしていますか? もしそうなら、変数が既に存在することを認識するための一致クエリをどのように構成すればよいでしょうか?

4

1 に答える 1

1

これはうまくいくはずです:

var url = details.url + (/\?tag=/.test(details.url) ? "" : "?tag=test");
// Explained if details.url contains the text "?tag=" -> don't add Parameter
// Else if it doesn't contain the Parameter -> add it. 

美しくはありませんが、機能します。

RegExp の Javascript リファレンスへのリンクを次に示します。

于 2013-10-03T19:19:32.613 に答える