Когда я загружаю свое расширение Chrome, оно показывает предупреждения правильно, но когда я пытаюсь использовать getElementById (), оно возвращает ноль.
Я обнаружил это, изменив первый оператор if на:
if (document.getElementById(button) == null) {
alert("No element found");
}
Он напечатает это, но не будет ничего подтверждать, кроме нуля (например, "! = Нуль").Дело в том, что элемент существует.Я вижу это на странице, когда я проверяю страницу, и я могу взаимодействовать с ней, но по какой-то причине расширение Chrome не находит мою кнопку или любой другой элемент по идентификатору, насколько я тестировал, кнопка или нет.
Куда бы я ни посмотрел, везде говорят, что Javascript запускается после загрузки страницы, но я настроил расширение для запуска, когда DOM полностью загружен.Я в полной растерянности здесь.Я потратил часы, работая над этим и исследуя его, и не могу понять, что происходит.
manifest.json
{
"manifest_version": 2,
"name": "Clicker",
"description": "Placeholder",
"version": "0.1",
// Permissions
"permissions": [
"activeTab"
],
// Scripts
"background": {
"scripts": ["clicker.js"],
"persistent": false
}
}
clicker.js
window.onload = function (){
var button = "clickIt";
var run = 1;
alert("Starting Clicker");
while (run = 1){
if (document.getElementById(button).disabled != true){
document.getElementById(button).click();
}
}
}
testpage.html
<html>
<head>
<title>Clicker Test Page</title>
</head>
<body onload="timer()">
<button id="clickIt" type="button" disabled="true" onClick="addCount()">Test Button</button> </br></br></br>
<!-- display counter for test button clicks -->
<p>Counter: </p>
<span id="click_counter">0</span> </br>
<!-- display countdown timer for clock cycles -->
<p>Timer: </p>
<p id="display_timer"></p>
</body>
</html>
<script type="text/javascript">
function timer(){
var timeleft = 10;
var downloadTimer = setInterval(function(){
document.getElementById("display_timer").innerHTML = timeleft + " seconds remaining";
timeleft -= 1;
if(timeleft <= -1){
clearInterval(downloadTimer);
document.getElementById("clickIt").disabled = false;
}
}, 1000);
}
function addCount(){
var val = document.getElementById("click_counter").innerHTML;
document.getElementById("click_counter").innerHTML = ++val;
document.getElementById("clickIt").disabled = true;
timer();
}
</script>
Тестовая страница отлично работает при ручном воспроизведении.Хотя я на 100% уверен, что расширение работает и работает бесконечно, как хотелось бы, оно не может найти какие-либо элементы по идентификатору и, таким образом, абсолютно ничего не делает, если вы не включите оповещения, чтобы убедиться, что оно никогда не входит в оператор if.Я также знаю, что он не может найти другие элементы на странице.