我需要迭代并单击页面上类.star_gray
的所有元素,并在重定向后保持迭代和点击。运行JavaScript代码不能满足第二个要求,所以我打算编写一个Chrome扩展。模拟Chrome扩展的页面上的点击元素?
但我未能通过扩展模拟网页上的点击事件。我的项目是如下:
manifest.json的
{
"manifest_version": 2,
"name": "Check'em All",
"description": "",
"version": "1.0",
"browser_action": {
"default_popup": "popup.html"
},
"background": {
"persistent": true,
"scripts": ["jquery.js", "background.js"]
},
"content_scripts": [{
"matches": ["file:///*"],
"js" : ["popup.js"]
}],
"permissions": [
"tabs",
"http://*/*",
"https://*/*"
]
}
popup.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Check'em All!</title>
</head>
<body>
<h1>Check'em All!</h1>
<button id="check-btn">BUTTON</button>
<script src="http://cdn.bootcss.com/jquery/2.1.4/jquery.min.js"></script>
<script src="popup.js"></script>
</body>
</html>
popup.js
document.addEventListener('DOMContentLoaded', function() {
var btn = document.getElementById('check-btn');
btn.addEventListener('click', injectScript);
});
function injectScript() {
alert('Handler called!');
chrome.tabs.executeScript(null, { file: 'background.js' });
}
个background.js
$(document).ready(function(){
$('.star_gray').click();
$('a.btn.page_next').click();
});
通过上面的代码,当我点击弹出按钮(#check-btn
),没有任何反应。
'document.getElementById('#check-btn');'是错误的。删除'#'符号。你可以用'document.querySelector'来使用它,因为它表示下面的文本是一个id。但是,使用仅查找元素标识的函数,这是多余的和错误的。 – enhzflep
@enhzflep对不起,这是一个错字。如果没有'#',代码仍然不起作用。 –