2016-06-08 69 views
1

我使用HTML 5 History API中的pushstate來更改我的單頁應用程序中的URL。使用History.pushstate時,如何防止每次點擊鏈接時網址變長?

history.pushState(stateObj, nodeName, 'home/index/' + documentTitle); 

我想改變的URL時,「家庭/索引/」每次要前置,使得它看起來像這樣:

mysite.com/home/index/documentTitle1 

mysite.com/home/index/documentTitle2 

mysite.com/home/index/documentTitle3 

mysite.com/home/index/documentTitle4 

但發生的事情是這個:

mysite.com/home/index/documentTitle1 

mysite.com/home/index/home/index/documentTitle2 

mysite.com/home/index/home/index/home/index/documentTitle3 

mysite.com/home/index/home/index/home/index/home/index/documentTitle4 

等等,我想你明白了。我怎樣才能防止這種情況發生?我想從history.pushstate的URL操作只是增加了URL鏈接到當前的URL使用絕對網址,而不是

回答

3

使用absoulte網址。隨着 history.pushState(stateObj, nodeName, '/home/index/' + documentTitle); 可以直接從它的根部覆蓋URL( - >「/」)

如果你的程序在運行子目錄,你必須前綴這一點。含義:

var baseUrl = "/app1"; 
history.pushState(stateObj, nodeName, baseUrl + '/home/index/' + documentTitle); 
1

嘗試:

history.pushState(stateObj, nodeName, 'http://example.com/home/index/' + documentTitle); 

或開始用/的網址:

history.pushState(stateObj, nodeName, '/home/index/' + documentTitle); 

來自pushState的文檔:

新的URL不必是絕對的;如果它是相對的,則相對於當前的URL解析爲

相關問題