Возьмите следующий код и передайте его через веб-сервер , например http-server
(пакет Node).У меня есть пример сервера здесь .
<meta http-equiv="Cache-Control" content="max-age=0"/>
<script>
window.onload = function() {
document.write('<script>history.pushState(null, null, "bar.html");console.log("passed");\u003c/script>');
}
</script>
Обратите внимание, что заголовок Cache-Control
есть, потому что IE агрессивно кэширует страницу по какой-то причине.Это помогло мне во время тестирования, но не обязательно воспроизвести проблему.
Когда я загружаю страницу в IE11 (Windows 10), я получаю SecurityError
, напечатанный на консоли, без изменения URLи «пропущено» не печатается.
В Edge 16 я «пропускаю» распечатанный на консоль, но URL-адрес не изменяется.
В Firefox и Chrome это работает нормально: URL-адресизменения и я "пропущен" напечатан на консоли.
Почему IE ведет себя таким образом, и как я могу использовать document.write()
в сочетании с pushState()
?Я хочу переписать весь документ, а не просто добавить к нему (вот почему я использую window.onload
).