2012-04-09 56 views
1

我正在使用Google chrome,並且已使用HMTL 5中的潛水中提到的其中一種檢測技術進行測試,以支持History API。但下面的一段代碼似乎不起作用。任何人都可以讓我知道我錯過了什麼?HTML中的歷史API 5

function demo() 
{ 
    alert("history changing"); 
if(window.history && history.pushState) 
{ 
    alert("api supported"); 
} 
else 
    alert("api not supported"); 
for(i=0;i<20;i++) 
{ 
    history.pushState(null,null,"\try.html"); 
} 
} 

for循環,其中我希望在瀏覽器的歷史記錄中插入20次url「try.html」似乎不起作用。我從名爲「try.html」的頁面調用該函數,其中函數「demo」在頁面加載時執行。該頁面「try.html」僅包含一行普通文本。我想要做的是,當用戶在加載頁面「try.html」後,點擊瀏覽器的後退按鈕,他仍然保持在同一頁面上,因爲歷史應該包含20個條目相同的頁面,即「try.html」,但它不。爲什麼?

+0

想要告訴我們該代碼的哪一部分不起作用?不要說「它不起作用」,請告訴我們輸出是什麼以及預期輸出是什麼。謝謝。 – jmort253 2012-04-09 06:02:51

+0

哦,我很抱歉。所以它就是這樣。 for循環,其中我希望URL「try.html」在瀏覽器的歷史記錄中插入20次,似乎不起作用。我從名爲「try.html」的頁面調用該函數,其中函數「demo」在頁面加載時執行。該頁面「try.html」僅包含一行普通文本。我想要做的是,當用戶在加載頁面「try.html」後,點擊瀏覽器的後退按鈕,他仍然保持在同一頁面上,因爲歷史應該包含20個條目相同的頁面,即「try.html」。 – qre0ct 2012-04-09 06:11:37

+0

可能與你的stateObj爲null的事實有關。 – jmort253 2012-04-09 06:16:09

回答

1

它適合我。您可能遇到兩個問題:

  1. 如果您嘗試從file:// URI運行您的功能,則會出現安全錯誤。 Chrome對此一言不發,但Firefox報告了錯誤。您需要將該頁面放在Web服務器上並通過http://進行訪問。
  2. 字符串"\try.html"表示一個製表符後跟ry.html,您可能的意思是"/try.html"

Here is a working example根據您的代碼。

+0

你好!感謝您的答覆。我嘗試了兩件事情。將「\ try.html」更改爲「\ 1.html」並將該文件上傳到Web服務器。但問題仍然沒有解決。我仍然無法在瀏覽器歷史記錄中看到更新的添加條目。你能幫忙嗎? – qre0ct 2012-04-09 12:14:04

+0

供您參考: - [link](http://www.sonatechsolutions.com/abhinav) 是包含名爲index.html和1.html的2個html文件的文件夾。文件index.html包含上述腳本,因此應該用20 1.html鏈接更新瀏覽器歷史記錄。但事實並非如此。請讓我知道我錯過了什麼... – qre0ct 2012-04-09 12:40:07

+0

@geek_ji停止在您的URI路徑中使用'\'而不是'/'。 '\'是一個JS轉義字符。 – robertc 2012-04-09 13:10:57