我需要迭代並單擊頁面上類.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對不起,這是一個錯字。如果沒有'#',代碼仍然不起作用。 –