2016-10-05 2 views
0

Ich versuche herauszufinden, wie man pushState funktioniert, also teste ich mit einer einfachen HTML-Seite mit einem einzigen Knopf darin, aber es ändert sich nicht URL oder scheinen alles zu tun.HTML history.pushState funktioniert nicht richtig

<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

Funktioniert für mich ... – Oriol

Antwort

0

Mit diesem Code ist nichts falsch.

Ich konnte das Problem reproduzieren, indem ich versuchte, das Dokument direkt von meiner lokalen Festplatte zu laden (über eine file: URL). Es gab diese Fehlermeldung:

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

Wenn ich das Dokument von einem Webserver (über HTTP) geladen, ging das Problem weg.

Sie müssen Ihr Dokument von einem Webserver laden.


Es gibt viele Situationen, in denen die Dinge verhalten sich anders zwischen file: und http: URLs (einschließlich Schema und Wurzel relative URLs, XMLHttpRequest, Postmessage, und viele andere). Führen Sie Ihre Tests immer über HTTP durch, um diese Probleme zu vermeiden.

Verwandte Themen