javascript - 如何在 chrome 扩展中使用 jQuery?

标签 javascript jquery google-chrome asynchronous google-chrome-extension

我正在写一个 chrome 扩展。我想在我的扩展中使用 jQuery。我没有使用任何背景页面,只是一个背景脚本

这是我的文件:

list .json

{
    "manifest_version": 2,

    "name": "Extension name",
    "description": "This extension does something,",
    "version": "0.1",

    "permissions": [
        "activeTab"
    ],

    "browser_action": {
        "default_icon": "images/icon_128.png"
    },

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

    "icons": {
        "16": "images/icon_16.png",
        "48": "images/icon_48.png",
        "128": "images/icon_128.png"
    }
}

我的 background.js 文件只运行另一个名为 work.js 的文件

// Respond to the click on extension Icon
chrome.browserAction.onClicked.addListener(function (tab) {
    chrome.tabs.executeScript({
        file: 'work.js'
    });
});

我的扩展的主要逻辑在 work.js 中。对于这个问题,我认为其中的内容无关紧要。

我想问的是如何在我的扩展中使用 jQuery。因为我没有使用任何背景页面。我不能只向它添加 jQuery。那么如何在我的扩展中添加和使用 jQuery?

我尝试从 background.js 文件中运行 jQuery 和我的 work.js。

// Respond to the click on extension Icon
chrome.browserAction.onClicked.addListener(function (tab) {
    chrome.tabs.executeScript({
        file: 'thirdParty/jquery-2.0.3.js'
    });
    chrome.tabs.executeScript({
        file: 'work.js'
    });
});

它工作正常,但我担心以这种方式添加的脚本是否正在异步执行。如果是,那么 work.js 甚至可以在 jQuery(或我将来可能添加的其他库)之前运行。

而且我还想知道在我的 chrome 扩展程序中使用第三方库的正确和最佳方式是什么。

最佳答案

您必须将 jquery 脚本添加到 chrome-extension 项目和 manifest.json 的 background 部分,如下所示:

  "background":
    {
        "scripts": ["thirdParty/jquery-2.0.3.js", "background.js"]
    }

如果您在 content_scripts 中需要 jquery,您也必须将其添加到 list 中:

"content_scripts": 
    [
        {
            "matches":["http://website*"],
            "js":["thirdParty/jquery.1.10.2.min.js", "script.js"],
            "css": ["css/style.css"],
            "run_at": "document_end"
        }
    ]

这是我做的。

此外,如果我没记错的话,后台脚本是在后台窗口中执行的,您可以通过 chrome://extensions 打开该窗口。

关于javascript - 如何在 chrome 扩展中使用 jQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21317476/

相关文章:

java - 在chrome最新版本中使用selenium处理打印预览窗口

Javascript:Firefox 中复选框+标签+preventDefault 的问题

javascript - 是什么导致表单提交时 URL 发生变化

javascript - 使用表单选择菜单在 HTML 中显示条件字段

javascript - 单击时如何使用 toggleClass 在我的 $ ('p' ) 标签上在华氏温度和摄氏温度之间切换

css - 添加了 jQuery 填充的 HTML 更新行为很奇怪。 ( Chrome )

jquery - $ajax 请求待处理 - chrome 缓存问题?

javascript - 如何在启用 Javascript 时显示一个 <div> 而在未启用时显示不同的 <div>?

c# - 将列表项从 c# 传递到 javascript 数组

javascript - Rails - 使用 AJAX 或重定向渲染 JavaScript