2012-04-05 8 views
1

Internet Explorer scheint der einzige große Browser zu sein, der pushState nicht unterstützt, um den Verlauf von AJAX-Übermittlungen zu verarbeiten. Also überall habe ich:

$.bbq.pushState(hash); 

in meinem AJAX-Code, ich habe eine andere Zeile hinzufügen:

$.ajax(hash); 

Dies verursacht natürlich eine Doppel Vorlage in allen Nicht-IE-Browser, die Vorlage unterstützen über pushState().

Was kann ich tun, um diese doppelten Eingaben zu vermeiden?

Antwort

2

Rufen Sie $.ajax(hash); in einer bedingten Anweisung nur, wenn die history.pushState nicht nativ

if (!history.pushState) { 
    $.ajax(hash); 
} 

unterstützt Ich schlage vor, auch der Code unter Verwendung einer einzigartigen Wrapper-Funktion zur Annahme eines Hash als Parameter mit der notwendigen Logik, Refactoring, z.B.

var pushStateWrapper = function(hash) { 

    if (!history.pushState) { 
     $.ajax(hash); 
    } 
    else { 
     $.bbq.pushState(hash); 
    } 
} 
+0

Großartig. Ja, ich muss umgestalten. Benenne ich dann pushStateWrapper mit meinem Hash? pushStateWrapper (Hash); – AKWF

+1

Ja, das ist der Zweck (natürlich hätte ich den Code zu stark vereinfachen können, ist nur, um Sie auf die Idee zu bringen) – fcalderan