2012-04-06 6 views

Antwort

8

Geben Sie ein Beispiel von dem, was Sie tun.

Wenn Ihre aktuelle URL in der Adressleiste hat die Form: http://somesite.com/path/ Und Sie passieren pushState(null, null, 'newpath'); in diesem Fall wird der Link wie http://somesite.com/path/newpath aussehen, aber wenn Sie übergeben einen Parameter wie: pushState(null, null, '/newpath'), in diesem Fall würde wie folgt aussehen: http://somesite.com/newpath

+0

das war es. Ich hätte schwören können, dass ich es ausprobiert habe. –

+0

Danke !! So einfach ... – kaleazy

+0

Das ist SEHR gefährlich, wenn Ihre Anwendung niemals im Root des Servers installiert wird! Siehe meine Antwort für eine Problemumgehung –

3

wenn Ihre Anwendung nicht an der Wurzel eingesetzt wird (wie zum Beispiel mit einem virtuellen Verzeichnis, oder einfach nur in einer tieferen Hierarchie), dann werden Sie die URL vermasseln am Ende, wenn Sie history.pushState({}, '/newpath'); tun

Es gibt einen Paar Alternativen:

1) Holen Sie sich Ihren Root-Pfad in einer Javascript-Variablen, der Sie einfach die URL voranstellen können. In diesem Beispiel ist window.ViewModel.rootPath nur ein willkürlicher Platz - modifizieren Sie dies einfach, wie auch immer Sie globale Variablen speichern möchten.

Sie müssen die rootPath im Skript (Beispiel hier für .NET) setzen.

<script> 
    window.ViewModel.rootPath = "@Request.ApplicationPath"; 
</script> 

history.pushState({}, window.ViewModel.rootPath + '/newpath'); 

2) Überprüfen Sie, ob die URL mit einem / endet und wenn ja müssen Sie schon mit 1 Verzeichnisebene gehen. Hinweis: Bei diesem Ansatz müssen Sie das "übergeordnete" Verzeichnis des gesendeten Elements kennen - in diesem Fall YourAccount.

history.pushState({ mode: 'Club' }, '', 
    (window.location.href.endsWith('/') ? '../' : '') + 
     'YourAccount/ManageClub/' + id); 

Wenn die aktuelle URL /preview/store/YourAccount ist, dann wird dies ../YourAccount/ManageClub/123 werden.

Wenn die aktuelle URL /preview/store/YourAccount/ ist, wird dies YourAccount/ManageClub/123.

Diese beiden enden mit der gleichen URL.

Verwandte Themen