2016-10-05 7 views
0

Я пытаюсь понять, как сделать работу pushState, поэтому я тестирую с помощью простой HTML-страницы с помощью одной кнопки в ней следующим образом, но это не меняет url или, похоже, что-то делать.HTML history.pushState не работает должным образом

<html> 
<body> 
<div id="test"> 
    <button id="btn">Click Me</button> 
</div> 

<script> 
document.getElementById("btn").onclick=function(){ 
    history.pushState({}, '', 'newurl.html'); 
} 
</script> 
</body> 
</html> 
+0

Работы для меня ... – Oriol

ответ

0

В коде нет ничего плохого.

Я смог воспроизвести проблему, пытаясь загрузить документ непосредственно с моего локального диска (через URL-адрес file:). Он дал это сообщение об ошибке:

x.html:9 Uncaught SecurityError: Failed to execute 'pushState' on 'History': A history state object with URL 'file:///Users/myusername/tmp/fjdkfjkd/newurl.html' cannot be created in a document with origin 'null' and URL 'file:///Users/myusername/tmp/fjdkfjkd/x.html'.document.getElementById.onclick @ x.html:9

Когда я загрузил документ с веб-сервера (через HTTP), проблема исчезла.

Необходимо загрузить документ с веб-сервера.


Есть много ситуаций, когда все ведут себя по-разному между file: и http: URL (включая схемы и относительную URL-адреса корневых, XMLHttpRequest, PostMessage, и многие другие). Всегда проверяйте HTTP, чтобы избежать этих проблем.

Смежные вопросы