只需点击Chrome扩展程序,即可打开网页上的所有链接

时间:2014-05-14 03:19:30

标签: google-chrome-extension

我只需点击Chrome扩展程序即可打开网页上的所有链接。我尝试了那个و但我没有得到任何结果。请帮帮我......

my manifist.json文件:

{
  "name": "Open Links in New Tabs",
  "version": "1.0",
  "description": "open all link in page on new tabs with one click",
  "background_page" : "background.html",
  "browser_action": {
    "default_icon": "icon.png"
  },

  "permissions": 
     ["tabs"],
  "manifest_version": 2
}

background.html文件:

<!doctype html>
<html>
  <head>
    <script src="background.js"></script>
  </head>
  <body>
  </body>
</html>

background.js文件:

for(i = 0; i < document.links.length; i++) 
{ chrome.tabs.create({active: true, url: document.links[i].href});}

请解释任何问题。感谢

2 个答案:

答案 0 :(得分:2)

当您访问document中的background.js对象时,您正在查看背景页面,而不是当前活动的标签页。

要访问打开页面的DOM内容,您需要一个内容脚本。然后,它可以向后台脚本(可以访问chrome.tabs)发送一条消息,其中包含要打开的链接列表。

请花一点时间阅读这篇优秀的overview of extension architecture。另外,请阅读messaging以传递列表。

实际上,如果您要通过chrome.tabs.executeScript以编程方式注入脚本,则可以放弃发送消息并使用callback of executeScript


作为旁注,由于后台页面中没有任何HTML,您可以将其替换为自动生成的脚本页面,如下所示:

的manifest.json

"background": {
   scripts": ["background.js"]
},

取代"background_page"


最后,请考虑您需要的最低权限。

如果您的扩展程序应该在单击扩展按钮(包含在chrome.browserAction.onClicked侦听器中)时触发,则可以使用activeTab permission“免费”注入脚本,无需选项卡/主机pemission。

同样适用于chrome.tabs.create,您不需要强大而可怕的“标签”权限。

答案 1 :(得分:1)

有很多。

  1. 后台脚本无法访问选项卡的页面DOM。它可以直接访问的唯一DOM是background.html的DOM。您应该使用内容脚本和消息传递。
  2. background_page是Manifest Version 1的一个选项,您使用的是Manifest Version 2,其选项名为background。通常,您直接将background.js作为脚本提供(请参阅https://developer.chrome.com/extensions/background_pages)。您应该在实施这些建议后返回