Wdrażam stronę internetową, która dynamicznie ustawia adresy URL przy użyciu History.js, gdy nowe sekcje są ładowane na pierwszą stronę za pośrednictwem ajax.Problemy z hasłami History.js w Internet Explorerze i wydaniu pushState
Wygląda na to, że działa dobrze, ale jest problem z sekcją skrótu w adresie URL, który History.js tworzy jako element zastępczy w Internet Explorerze.
Oto przykłady linków na stronie, tworzone przy użyciu jQuery:
function connect_browse_buttons(){
$('.browselink').each(function(){
$(this).click(function(){
var action = $(this).attr('name');
action = action.substring(('action_browse').length);
browsetype = action;
if (isIE){
// remove data object and title to avoid use of SUIDs by History.js in IE
History.pushState(null, null, '/public/' + action);
} else {
History.pushState({oldurl: History.getState()['url']}, "Example " + action, config.wwwroot + "public/" + action);
}
return false;
});
});
}
Plik .htaccess przekierowuje żadnych adresów URL, takich jak http://example.com/public/category_a do http://example.com, gdzie javascript analizuje URL i ładuje odpowiedni punkt za pośrednictwem AJAX żądania w module changeState.
javascript sprawdza adresy URL, takich jak
http://example.com/public/category_a
oraz dla równoważnych URL zastępczych utworzonych w programie Internet Explorer, tj
http://example.com/#public/category_a
To wszystko działa OK - tak:
W Firefoksie, jeśli otworzę witrynę w katalogu głównym witryny, http://example.com i kliknę link, jak wyżej, zawartość lo reklamy (w przewodnika changeState) oraz adres URL jest ustawiony przez History.pushState jak:
http://example.com/public/category_a
Gdybym następnie kliknij innego łącza URL jest ustawiony jak na przykład:
http://example.com/public/category_b
w IE, gdybym otworzyć witrynę w katalogu głównym witryny, a następnie kliknij na link, jak na powyższym obciążeń zawartość i adres URL jest ustawiony z hash jak:
http://example.com/#public/category_a
gdybym wtedy Cl ick następnego linku URL jest ustawiony jako:
http://example.com/#public/category_b
Problem pojawia kiedy otworzyć stronę w IE, który został zakładek w Firefoksie, i nie ma hash w adresie URL. Weźmy nasz zwykły przykład:
http://example.com/public/category_a
Gdybym otworzyć ten adres bezpośrednio w IE, poprzez zakładki lub wklejając adres URL w pasku adresu przeglądarki, .htaccess przekierowania pomyślnie, adres URL jest analizowany OK przez js plik i ładuje zawartość. Jednak teraz, gdy klikam na link category_b, adres URL jest ustawiony przez History.pushState do:
http://example.com/public/category_a#./category_b
Co naprawdę chciałem było ustawić adres URL jako:
http://example.com/#public/category_b
Jednak historia. Wydaje się, że js bierze cały poprzedni URL jako adres bazowy dla kolejnych pushStates. Próbowałem ustawić bezwzględne adresy URL w History.pushState, ale bez powodzenia. Jak widać w powyższym bloku kodu, mam specyficzną dla IE instrukcję pushState. Próbowałem skonfigurować to na różne sposoby.Jak mogę dostać Historia pushState rozpoznać:
http://example.com
jako części podstawowej zawartości, której sekcja mieszania powinny być dołączone do? A może jest lepszy sposób podejścia do tego niż opisałem powyżej?
Witam, czy udało Ci się znaleźć jakieś rozwiązanie problemu, kiedy strona jest odświeżana, przeglądarka ładuje pierwszy adres URL zamiast aktualnego? –
Czy przeczytałeś ten quesiton ?: http://stackoverflow.com/questions/14342912/using-history-pushstate-in-ie9 Może znajdziesz pomocne wskazówki: – nikoskip
dlaczego nie zrobić pushstate do public/category_a i "redirect" do # usunąć hasz, gdy działa funkcja pushstate? –