chrome.webRequest.onBeforeRequest不止一次触发?

时间:2013-10-03 10:12:09

标签: javascript regex google-chrome-extension

我正在尝试使用chrome的webRequest将变量添加到网址。 javascript非常简单。

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

然而,当我将它应用于任何域时,我至少得到了变量的双重结果。当我使用直接导航测试cnn.com时,实际上我将变量附加了4次。

这是清单的相关剪辑。

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

浏览器和服务器之间是否有往返行程,所以服务器在实际显示之前将网址送回扩展程序?如果是这样,我将如何构建匹配查询以识别变量何时已存在?

1 个答案:

答案 0 :(得分: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. 

不漂亮,但有效。

Here is a link to a Javascript reference for RegExp