Javascript 打开链接数组

Javascript 打开链接数组,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在开发一个简单的Chrome扩展,目的是打开一个页面上的每个链接。目前,我有这个 manifest.json: openlinks.js: 现在我试图用当前选项卡中的链接数组替换示例链接数组。这只是使用标准JavaScript或jQuery实现的一个例子吗?请看一看,因为您需要一个事件页面和一个内容脚本来实现这一点 以下是我将如何着手解决这个问题的概要: 清单结构事件页+activeTab权限 "background": { "scripts": ["bg.js"], "persistent

我正在开发一个简单的Chrome扩展,目的是打开一个页面上的每个链接。目前,我有这个

manifest.json:

openlinks.js:

现在我试图用当前选项卡中的链接数组替换示例链接数组。这只是使用标准JavaScript或jQuery实现的一个例子吗?

请看一看,因为您需要一个事件页面和一个内容脚本来实现这一点

以下是我将如何着手解决这个问题的概要:

清单结构事件页+activeTab权限

"background": { "scripts": ["bg.js"], "persistent": false },
"permissions": ["activeTab"],
"browser_action": {},
单击浏览器操作时,浏览器授予访问当前选项卡的权限,我们使用该选项卡插入脚本。看

内容脚本具有访问DOM和使用的权限,但受大多数扩展API的限制,尤其是chrome.tabs

后台页面侦听消息

// bg.js
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  request.links.forEach(link => chrome.tabs.create({url: link});
});

实现这一点对于堆栈溢出答案来说相当复杂——注入内容脚本、生成链接数组、发送扩展消息以及创建选项卡以响应消息。你能缩小你的问题范围吗?我没想到它会这么复杂!我是否已经将openlinks.js注入内容脚本?鉴于内容脚本正在完成执行,将数据作为内容脚本的结果返回并在tabs.executeScript回调中接收数据会更有效,因为您应该有一个回调来处理错误情况,例如用户在不允许向其中插入脚本的页面上单击浏览器操作按钮。如果你这样做的话,就没有必要增加使用的复杂性。谢谢你,乔希!现在通读一遍说内容脚本没有其他扩展权限是不准确的。虽然不需要列出可用的API,但下面的内容仍然很简单,但更准确:有关允许用于内容脚本的非常有限的chrome.*扩展API的完整列表,请参阅。@Makyen如何工作?剧本的结果是什么意思?@JoshLee:讽刺的是,我。我同意文件的措辞很差。除了Chrome文档之外,也有相同的措辞,所以我昨天更新了它,使其更具体,并提供了一个简单的示例。
"background": { "scripts": ["bg.js"], "persistent": false },
"permissions": ["activeTab"],
"browser_action": {},
// bg.js
chrome.browserAction.onClicked.addListener(tab =>
  chrome.tabs.executeScript({file: 'content.js'});
});
// content.js
message = {}
message.links = [...document.querySelectorAll(
        'div.question-summary a.question-hyperlink')].map(e=>e.href);
chrome.runtime.sendMessage(message);
// bg.js
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  request.links.forEach(link => chrome.tabs.create({url: link});
});