2016-10-05 72 views
0

我想弄清楚如何使pushState工作,所以我用一個簡單的HTML頁面進行測試,其中包含一個按鈕,如下所示,但它不會更改網址或似乎做任何事情。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

該代碼沒有任何問題。

我能夠通過嘗試直接從我的本地磁盤加載文檔(通過file: URL)來重現該問題。它給出了這個錯誤信息:

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

當我從Web服務器(通過HTTP)加載文檔時,問題就消失了。

您需要從Web服務器加載文檔。


有很多那裏的東西表現不同file:http:的URL(包括方案和根的相對URL,XMLHttpRequest的,PostMessage的,和許多其他人)之間的情況。始終通過HTTP進行測試以避免這些問題。