在Chrome.tabs.Query中调用javascript函数

时间:2014-12-26 05:07:04

标签: javascript google-chrome google-chrome-extension

我在调用给定的javascript代码时收到以下错误

"Error in response to tabs.query: ReferenceError: printTabs is not defined"

有人可以帮助我解决这个问题。

var tabinator = {
  fillBody: function() {
    chrome.tabs.query(
      {}, 
      function(tabs) { 
        for(var i=0; i<tabs.length; i++) { 
         printTabs(tabs[i].title,tabs[i].id);
        }
      }
    );
  },

printTabs:function(x,y,z){
console.log(x+y+z);
}
};

// --- Execution starts here ---
document.addEventListener(
  'DOMContentLoaded', 
  function () {
    tabinator.fillBody();
  }
);

1 个答案:

答案 0 :(得分:0)

由于printTabstabinator对象中定义的函数。您必须使用tabinator调用它来引用this对象。您还必须确保使用变量chrome.tabs.query将此引用传递给that的回调函数。

试试这个,

var tabinator = {
  fillBody: function() {
    var that = this;
    chrome.tabs.query(
      {}, 
      function(tabs) { 
        for(var i=0; i<tabs.length; i++) { 
         that.printTabs(tabs[i].title,tabs[i].id);
        }
      }
    );
  },

printTabs:function(x,y,z){
    console.log(x+y+z);
}
};

// --- Execution starts here ---
document.addEventListener(
  'DOMContentLoaded', 
  function () {
    tabinator.fillBody();
  }
);