【问题标题】:Develop a chrome extension to count <input> tags of currently accessed webpage开发一个 chrome 扩展来统计当前访问网页的 <input> 标签
【发布时间】:2015-04-25 15:44:05
【问题描述】:

嘿,我是 javascript 和 chrome 扩展开发的新手。我正在尝试开发一个 chrome 扩展,它使用浏览器操作来计算 Google Chrome 浏览器当前活动选项卡中的标签数量。我可以使用 getElementsByTagName.lenght 方法来计算标签数量,我知道我可以使用控制台用于访问网页 DOM 的 API。但我不知道如何从我的 javascript 文件中调用该 API。你们知道吗?

【问题讨论】:

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


【解决方案1】:

要访问当前页面 DOM,您需要编写内容脚本。 1.在manifest.json中指定内容脚本

"content_scripts": [
    {
      "matches": ["http://www.google.com/*"],
      "css": ["mystyles.css"],
      "js": ["jquery.js", "myscript.js"]
    }
  ]

如果您需要注入脚本,有时通过指定权限字段来使用编程注入:

{
  "name": "My extension",
  ...
  "permissions": [
    "activeTab"
  ],
  ...
}

2.在这种情况下我更喜欢后者。在popup.js中添加代码:

function printResult(result){
//or You can print the result using innerHTML
console.log(result);

}
chrome.tabs.executeScript(null, { file: 'content.js' },function(result){
   printResult(result);
});

3.在内容脚本中,您可以访问当前页面/活动标签 DOM。

var result=document.getElementsByTagName("input").length;

【讨论】:

  • 没有理由使用getBackgroundPage,使用它是有害的建议,因为它不适用于活动页面。
  • 您使用了很多不需要的样板文件(init 是什么?),您永远不会在后台取消注册您的消息侦听器(导致 callback 在第 N 次被调用 N 次打电话给getResult。我看到你想帮忙,但这个答案需要工作。
  • 我建议在executeScript 的回调中使用内容脚本的返回值而不是消息传递,这样就不需要注销处理程序。
  • @Xan 感谢您的建议。实际上我是 chrome 扩展开发的新手。我的代码现在正确吗??
  • 差不多。为什么这里需要背景页面?无需消息,只需从弹出窗口中执行executeScript。并且"activeTab" 权限要好得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 2012-03-23
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
相关资源
最近更新 更多