Я пробегаю учебник по холсту 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
, как и ожидалось.