我只需点击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});}
请解释任何问题。感谢
答案 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)
有很多。
background_page
是Manifest Version 1的一个选项,您使用的是Manifest Version 2,其选项名为background
。通常,您直接将background.js
作为脚本提供(请参阅https://developer.chrome.com/extensions/background_pages)。您应该在实施这些建议后返回