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