geschieht I-Seite, die das Routing auf Clientside tut, mit Geschichte API & Push/popstate. Was bei allen modernen Browsern gut funktioniert. (Suchmaschinen werden von node.js prerenderer unterstützt)IE Brennen popstate nicht, wenn hashchange
Allerdings stieß ich vor kurzem auf Problem, wo IE popstate auf Hashchange während nicht feuert, während Pushstate mit URLs funktioniert gut, einschließlich IE11.
Zum Beispiel wie so ...
$(document).on('click', 'a', function(e) {
e.preventDefault();
History.pushState({}, '', $(this).attr('href'));
});
... die richtig feuert ...
$(window).on('popstate', function() {
console.log('url changed');
});
der W3C-Spezifikation Nach sollte die hashchange Feuer popstate wie es die aktuelle ändert sich Geschichte. Wenn ich jedoch Hash-Links (<a href="#hashchange">...
) hinzufüge und auf IE klicke, wird nichts ausgelöst. :/
würde ich nicht wollen IE Erkennung tun (wie es heutzutage so viele Browser gibt, die in die gleiche Grube des Verderbens fallen könnte), sondern als Feature-Detektion. Doch wie die Geschichte (popstate/pushstate) funktioniert gut, den Rest der Art und Weise kann ich nicht einmal das Problem auf fehlende Push/popstate erkennen ...
if(!window.history || !window.history.pushState) { ...
... und verwenden Sie die hashchange statt. :/
Irgendwelche Gedanken?
PS. Als Bonus bläst die Verwendung von jquery.history.js (jquery-Wrapped-Version von history.js) mit Hashtag-URL das ganze auf.
http://localhost/routetest/index.html#/page1/1234
wird
http://localhost/page1/1234
... ??? :/
Welche Version von IE an Ihnen spähen? Es scheint ein Problem mit 'pushState()' für IE 9 zu geben. Sehen Sie sich diese Frage mit der angegebenen Antwort an: http: // stackoverflow.com/questions/3722815/does-internet-explorer-support-pushstate-und-replacestate – urbz
Ah, tut mir leid. IE11. Gerade erwähnte moderne Browser aber gescheitert auf der IE-Version :) – crappish