1

我编写了以下 chrome 扩展程序来检测用户所在的 URL 并处理来自特定 URL 的一些数据。Background.js 包含以下代码:

var triggerURL = "http://xxxxxxxxxxxxxxx/";

function SearchURL(theURL) {
  this.URL = theURL;
  this.checkURLorigin = function() {
    if (this.URL.indexOf(triggerURL) !== -1) {
      console.log("you're on the search page");
      return true;
    }
    else
      return false;
  };
  this.query = function() {
    console.log(this.URL);
    var index = this.URL.indexOf("q=");
    var searchQuery = this.URL.substr(index + 2);
    return searchQuery;
  };
}

chrome.webRequest.onBeforeRequest.addListener(function(details){
  var currentSearchURL = new SearchURL(details.url);
  console.log(currentSearchURL.checkURLorigin);
  if (currentSearchURL.checkURLorigin) {
    msg = currentSearchURL.query;
    console.log("you're on the search page, query = " + msg);
  }
},
{urls: [triggerURL + "*"], types: ["main_frame"]}, ["blocking"]);

但是,console.log 显示 SearchURL 对象中的代码没有执行,而是在控制台中打印了函数的内容。为什么是这样?

4

1 回答 1

4

你缺少一个()。正确的调用应该是

 msg = currentSearchURL.query();
于 2013-04-27T17:04:50.397 回答