2013-09-06 21 views
5

Im usnig History.js, aby wstawić adres URL, ale w IE dołącza nazwę strony.History.js PushState w przeglądarce HTML 4 (IE) niepoprawnie zmienia adres URL

jeśli mój oryginalny adres URL jest: http://www.mydomain.com/Home.aspx

a potem wykonać następujące czynności:

var url = window.location.protocol + '//' + window.location.host + „/ home .aspx? id = 2 & pl = 4 '; History.pushState (null, null, url)

W Chrome staje się moja url: http://www.mydomain.com/Home.aspx?id=2&pl=4

W IE 8 moja url staje: http://www.mydomain.com/Home.aspx#Home.aspx?id=2&pl=4

Gdybym wklej adres URL w IE 8 Chrom mój kod nie powiedzie ...

Po pierwsze, jak powinien wyglądać właściwy adres URL html 4, a po drugie, jak mogę to naprawić?

+0

Twoim problemem jest to, że wszystko po tym, jak # nie jest wysłane na serwer. Więc mydomain.com/Home.aspx nigdy nie otrzyma id i pl, które są po haszowaniu. – patrick

+0

To, co dostajesz, jest przeznaczone, używam w naszej witrynie klienta i zachowuje się w ten sam sposób, w jaki podałeś i działa dobrze. Adres URL z hasłem będzie również działał poprawnie w przeglądarkach Chrome. –

Odpowiedz

0

Uważam, że nie przesuwasz prawidłowo stanu, spróbuj ponownie sformatować URL, który naciskasz, np. History.pushState({data: 'home'}, null, '/Home/').

A może myślałeś, że popychanie stanu wysyła również żądanie do serwera, tak jak to robiłeś z zapytaniem? To nie kumpel.

Dlatego nie należy oczekiwać, że cokolwiek zadziała, wklejając stan, który został przekazany do innych przeglądarek. Po pierwsze dlatego, że inne przeglądarki nie mają historii o Twojej witrynie, a po drugie, musisz złapać zdarzenie statystyki ze Historią.

np.

+0

Zdarzenie statechange nie jest problemem. To wszystko działa. Jeśli popchnę "/ Home /", a następnie dodaję zakładkę do tej strony, a następnie ponownie załaduję stronę, to nie będzie działać, ponieważ asp.net spodziewa się ".aspx" na końcu domu ... Im to działa w witrynie SharePoint. –