Chrome扩展程序中无法使用jQuery触发点击

我正在尝试使用一行jQuery代码制作一个Chrome扩展程序,但是它不起作用。我正在尝试触发元素上的点击。

chrome控制台根本不显示任何错误,并且当我仅将jQuery代码放在控制台中时,它可以正常工作。

我的代码:

$(document).ready(function() {

$('.like_post:contains(Like)').click();

});

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);

});

{

"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事件,该事件将被页面的代码捕获。有关示例,请参见此问题。

以上是 Chrome扩展程序中无法使用jQuery触发点击 的全部内容, 来源链接: utcz.com/qa/419109.html

回到顶部