Как перезагрузить страницу в JavaScript после предупреждения в Chrome - PullRequest
0 голосов
/ 24 декабря 2018

Я пробегаю учебник по холсту MDN для игры Breakout.Когда мяч пройдет мимо весла, игра должна закончиться, и страница перезагрузится, начавшись снова.

Код выглядит следующим образом:

 if (y + dy < ballRadius) {
     dy = -dy;
 } else if(y + dy > canvas.height-ballRadius) {
     if(x > paddleX && x < paddleX + paddleWidth) {
        dy = -dy;
     } else {
        alert("GAME OVER");
        document.location.reload();
     }
 }

В FireFox и Safari он работает, как и ожидалось, после закрытия предупреждения страница перезагружается и сценарий запускается заново с начала.

Однако в Chrome после того, как мяч достигнет конца y границ холста, и отобразится предупреждение, если вы нажмете Ok, чтобы закрыть его, страница не перезагрузится.Вместо этого мяч продолжает двигаться, и после каждой итерации отображается новое предупреждение (которое, если вы отклоните с Ok, оно продолжит без перезагрузки).

Кто-нибудь знает, что происходит и почему страница не будетперезагрузить?

Вот полный код

Та же функциональность, что и в Chrome, наблюдается в JSFiddle

Обновление: в консоли в Chrome, если я пытаюсь document.location.reload(), я получаю undefined.document.location приводит к localhost, как и ожидалось.

1 Ответ

0 голосов
/ 24 декабря 2018

Очистить интервал после вызова перезагрузки.

Измените setInterval(draw, 10); на var interval = setInterval(draw, 10);.

Добавьте clearInterval(interval); после document.location.reload();.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...