【问题标题】:Google Chrome Extension: jQuery doesn't work in background.js [duplicate]Google Chrome 扩展程序:jQuery 在 background.js 中不起作用 [重复]
【发布时间】:2016-03-04 17:49:21
【问题描述】:

由于某种原因,jQuery 在我的 Google Chrome 扩展程序的 background.js 中不起作用。

假设我的插件告诉我页面上的所有图像。我验证它可以到达下面的方法,但它在 jQuery 循环处停止。

首先,manifest.json:注意我包括 jQuery,文件存在:

{
    "name": "Gallery",
    "version": "0.0.1",
    "manifest_version": 2,
    "description": "Gallery", 
    "browser_action": {
        "default_icon": "G.png" 
    },  
    "background": {
        "persistent": true,
        "scripts": ["jquery-1.11.2.min.js", "background.js"]  
    },     
    "permissions": [
        "tabs", "contextMenus", "http://*/*", "https://*/*"
    ], 
    "content_scripts": [
        {
            "matches": [
                "http://*/*",
                "https://*/*"
            ],
            "css": ["contentstyle.css"],
        "js": ["jquery-1.11.2.min.js", "contentscript.js"]
        }
    ], 
    "icons": {
              "32": "G.png" 
  }
}

background.js 使用 jQuery 语法:

chrome.browserAction.onClicked.addListener(scanImages);

function scanImages()
{
    // IT GETS HERE - THIS IS OK
    alert('Clicked plugin button, about to start looping thru IMG...'); 

    // BUT STOPS HERE: JQUERY DOESN'T EXECUTE
    $("img").each(function() {
        alert($(this).prop("src"));
    });

    // ANOTHER JQUERY THAT DOESN'T WORK
    alert('Page title = ' + $(document).find("title").text());
}

【问题讨论】:

标签: google-chrome google-chrome-extension


【解决方案1】:

要访问任何页面的 DOM,您需要使用 cmets 中解释的内容脚本。虽然在你的 background.js 中有另一种访问多个脚本的方法。

在你的 background.html 文件中添加jquery-1.11.2.min.js

....
<script type="text/javascript" src="jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="background.js"></script>
....

manifest.json --&gt;

"background": {
    "page": "path/to/background.html",
    "persistent": true
}

您也不必定义 scripts 键,只需在 html 文件的 head 部分定义您的 background.html 页面和您想要的脚本。希望对你有帮助。

【讨论】:

  • 这个答案不正确。是的,它会让 jquery 在后台工作,但实际问题是操作需要了解扩展架构。即使包含库,代码也永远无法工作。
  • 哦,是的,我的错,他正试图从无法访问网页的 background.js 脚本访问 DOM。是的,代码将进入内容脚本。
  • @ZigMandel 更新了我的答案,谢谢指出。
  • scripts 键很好的情况下使用旧机制投反对票,并且只在模糊的评论中回答实际答案。
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-08
  • 2013-12-28
相关资源
最近更新 更多