2016-06-08 3 views
1

Я использую pushstate из API истории HTML 5, чтобы изменить URL-адрес в моем приложении с одной страницей.При использовании History.pushstate, как я могу предотвратить увеличение URL-адреса каждый раз, когда я нажимаю ссылку?

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 

И так далее, я думаю, вы поняли суть. Как я могу предотвратить это? Я думал, что манипуляции URL из history.pushstate просто добавляет URL в текущий URL

ответ

3

Использовать абсентные адреса. С history.pushState(stateObj, nodeName, '/home/index/' + documentTitle); вы непосредственно перезаписать URL из его корня (-> «/»)

Если ваша программа работает на подкаталог, вы должны префикс это. Значение:

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

Try используя абсолютный URL вместо:

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

или запуска URL с /:

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

Из документов для pushState:

Новый URL не обязательно должен быть абсолютным; если он относительный, он разрешен относительно текущего URL-адреса

Смежные вопросы