2013-04-24 36 views
4

經歷了history.js和this question的問題,它的後續答案只是爲我創造了更多的問題。History.js和IE

問題1:

popstatestatechange聽衆似乎都通過pushState()popState()來觸發,其中根據該回答者是由設計?

我只想聽popstate事件,我知道我可以通過使用數據參數來檢查,但是將數據和標題參數設置爲任何不是null在IE8/9的散列中添加了一堆額外的東西,像這樣:

http://www.site.com/#about/?_suid=13383514298760299522541335484 

我知道我可以創建一個額外的var來照顧,但我寧願不。


問題2:

而且在IE8-9,你怎麼刪除哈希主頁,現在如果我做

History.pushState(null, null, 'http://www.site.com'); 

的URL原來一樣這個:

http://www.site.com/#http%2A//www.site.com 

如果我這樣做:

History.pushState(null, null, ''); 
History.pushState(null, null, '/'); 

的網址原來是這樣的:

http://www.site.com/#./ 

但我想的網址,以利用這些格式中的任何一個:我使用了jQuery插件歷史

http://www.site.com 
http://www.site.com/ 
http://www.site.com/# 
http://www.site.com/#/ 

+0

History.js中沒有popState功能。在場景後面,history.js會查詢URL更改,如果URL更改發生,它將觸發stateChange Even。 – NavaRajan 2013-04-29 05:08:45

回答

1

我不確定問題1的答案。

但是,對於問題2,問題與HTML5瀏覽器與HTML4瀏覽器的功能有關。從文檔:

對於HTML5瀏覽器,這意味着您可以直接修改URL,而無需再使用散列。對於HTML4瀏覽器,它將恢復使用舊的onhashchange功能。

因此,HTML4瀏覽器被哈希URL阻塞。抱歉。