Chrome扩展上的JQuery代码不起作用

我想用一行jQuery代码做一个Chrome扩展,但它不工作。 铬的控制台不显示任何错误,当我只把jquery代码在控制台中工作正常。

我在这里有这些代码。 content.js

$(document).ready(function(){ $('.like_post:contains(Like)').click();}); 

background.js

  chrome.windows.getCurrent( function(currentWindow) { chrome.tabs.query({active: true, windowId: currentWindow.id}, function(activeTabs){ chrome.tabs.executeScript( activeTabs[0].id, {file: 'jquery-2.1.3.min.js', allFrames: true} ); chrome.tabs.executeScript( activeTabs[0].id, {file: 'content.js', allFrames: true} ); }); console.log(currentWindow.id); }); 

的manifest.json

  { "name": "plugin name", "version": "0", "description": "What do I do as an extension", "manifest_version": 2, "browser_action": { "name": "project with jquery", "icons": ["icon.png"], "default_icon": "icon.png" }, "content_scripts": [ { "js": [ "jquery-2.1.3.min.js", "background.js", "content.js" ], "matches": [ "http://*/*", "https://*/*"] }] } 

我也下载了jquery-2.1.3.min.js文件,并将其放在扩展文件夹中。

任何人都可以看到为什么它不工作?

感谢您的阅读时间。

问题的根本原因在于扩展内容脚本在孤立的世界中执行。 其中一个原因是,您的代码不会与页面代码发生冲突:例如,您可以使用不同版本的jQuery。

所以,你的内容脚本有自己的jQuery副本。 jQuery的.click()工作方式是维护由点击触发的事件处理程序列表。

..你可能已经看到了这个问题。 内容脚本的jQuery副本不知道处理程序的页面副本列表,并且无法触发它们 。

顺便说一句,解释了为什么它在控制台中工作 – 默认情况下, 控制台在页面的上下文中执行并触发页面的jQuery副本。

有一些方法可以解决这个问题,但是对于你的任务来说最直接的就是发出一个适当的 DOM事件,这个事件会被页面的代码所捕获。 看到这个问题的例子。