Почему страница останавливается после запуска расширения chrome, которое вводит сценарии

#javascript #google-chrome-extension

Вопрос:

Я пытаюсь сделать расширение Chrome для игры в игру.

Я вводил сценарии, используя свое расширение, которое играет в игру, но страница зависает и перестает работать после ввода кода

Введенный код является:

 function sleep(milliseconds) {
  const date = Date.now();
  let currentDate = null;
  do {
    currentDate = Date.now();
  } while (currentDate - date < milliseconds);
}
function wait() {
  while (
    !String(document.getElementById("showpoke").innerHTML).includes(
      "Try moving to another spot."
    ) ||
    !document.getElementById("catch")
  ) {
    sleep(1000);
  }
}
document.getElementById("dr-n").click();
wait();
document.getElementById("dr-s").click();
 

код, который я хотел запустить первым, был

 while (run) {
  document.getElementById("dr-n").click, 2000;
  if (document.getElementById("catch")) {
    document.getElementById("catch").click();
    run = false;
  }
}
 

но это перегружало страницу циклом continues while, поэтому я добавил ожидание и сон, что снова создает ту же проблему

Ответ №1:

Вы делаете то, что мы называем «занятое ожидание», что означает, что вместо того, чтобы просто ждать, вы блокируете выполнение потока, удерживая его занятым в пустом цикле, если игра использует тот же поток, то он тоже будет заблокирован, вам, вероятно, следует попробовать использовать

setTimeout()

или даже

setInterval()

если вы хотите периодически запускать код, если это не проблема, я не могу вам помочь, так как не знаю, как работает игра.

Комментарии:

1. но тайм-аут и установленный интервал не решат проблему см. я просто хочу запустить этот код var run = true; while (run) { document.getElementById("dr-n").click, 2000; if (document.getElementById("catch")) { document.getElementById("catch").click(); run = false; } } , но страница зависает, если мы запустим это, так как мы перегружаем страницу, запустив ее в цикле while

2. вам нужно заменить цикл while таймаутом или интервалом, чтобы вы не