javascript - 打开链接数组

标签 javascript google-chrome-extension

我正在开发简单的 Chrome 扩展程序,目的是使用 entry 类打开页面上的每个链接。目前,我有这个......

manifest.json:

{
    "manifest_version": 2,

    "name": "Hello World",
    "description": "A simple Chrome Extension",
    "version": "1.0",

    "background": {
        "scripts": ["openlinks.js"],
        "persistent": true
    },

    "permissions": [
        "tabs",
        "http://*/",
        "https://*/"
    ],
    "browser_action": {
        "default_icon": "logo.png"
    }
}

openlinks.js:

chrome.browserAction.onClicked.addListener(function(tab) {
    var linkArray = ['https://www.google.com', 'http://www.bbc.co.uk']; // your links
    for (var i = 0; i < linkArray.length; i++) {

    chrome.tabs.create({
        url: linkArray[i]
    });
}
});

现在我尝试用当前选项卡中的链接数组替换示例链接数组。是否只是使用标准 JavaScript 或 jQuery 来实现此目的?

最佳答案

看看Chrome Extensions Overview # Architecture ,因为您需要事件页面和内容脚本来实现这一点。

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

  1. list 结构(事件页面 + activeTab 权限)。

    "background": { "scripts": ["bg.js"], "persistent": false },
    "permissions": ["activeTab"],
    "browser_action": {},
    
  2. 单击浏览器操作时,浏览器会授予访问当前选项卡的权限,我们用该权限来注入(inject)脚本。请参阅Content Scripts # Programmatic Injection .

    // bg.js
    chrome.browserAction.onClicked.addListener(tab =>
      chrome.tabs.executeScript({file: 'content.js'});
    });
    
  3. 内容脚本有权访问 DOM 并使用 message passing ,但受到大多数扩展 API 的限制(特别是 chrome.tabs)。

    // content.js
    message = {}
    message.links = [...document.querySelectorAll(
            'div.question-summary a.question-hyperlink')].map(e=>e.href);
    chrome.runtime.sendMessage(message);
    
  4. 后台页面监听消息。

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

关于javascript - 打开链接数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41600369/

相关文章:

Javascript:了解鼠标指针下的所有元素(多个 z 轴层)

php - 如何访问 require.js 异步加载的 Javascript 中的 URL 参数?

JavaScript 函数由 3 个函数组成

javascript - Nodejs,如何获取嵌套json对象中的值,中间键未知

javascript - Chrome 新标签自动对焦

javascript - 我怎么知道用户是否篡改了 CSS 或 JavaScript 来改变我网站的外观?

html - CSS: "Sync"选择器属性

javascript - ajax中js封装函数的返回值

javascript - Jquery 在 Chrome 扩展选项页面中验证

javascript - 带有 url + 选定文本的新标签(js,Chrome 扩展)