2010-12-09 12 views
1

ich eine Website haben, wo ich diesen Code putten haben, Fehler zu vermeiden:document.readyState in Firefox 3.5.x

$(function() { 
    var fnDocumentReady = function() { 
    if(document.readyState != "complete") { 
     setTimeout(function() { fnDocumentReady(); }, 300); 
     return; 
    } 

    //do stuff 
    }; 

    fnDocumentReady(); 
}); 

Aber ich habe kürzlich entdeckt, dass 3,5 FF in nicht ausgeführt, den Code, wo das "Machzeug" ist. Nach dem Analysieren und Debuggen wurde mir klar, dass document.readySate in FF immer undefined ist. Gibt es eine Möglichkeit, dies durch etwas anderes zu ersetzen, das ähnlich funktioniert?

Danke!

Antwort

1

Antwort auf die warum? Teil: document.readyState was added in Firefox 3.6.


Es gibt keine Notwendigkeit, hier für die zusätzliche Überprüfung, bereits jQuery abstrahiert Erkennen, wenn das DOM bereit ist, alles, was Sie brauchen, ist:

$(function() { 
    //do stuff 
}); 

Wenn Sie alle Bilder, bevor Sie Ihren Code geladen wollen, sind läuft, window.onload nur stattdessen verwenden, wie folgt aus:

$(window).load(function() { 
    //do stuff 
}); 
+0

es könnte stehen zu vermuten, dass dies keine gute Antwort ist, weil nicht jeder jQuery verwendet, aber wie es angenommen wurde kann ich nicht zu viel klagen. Ich werde sagen, dass in Firefox, wenn Ihr Code früh genug läuft, er auf das "DOMContentLoaded" -Ereignis hören kann, um herauszufinden, wann Firefox 3.6 und später "readyState == 'complete'' zurückgegeben hätte – Guss

+0

@Guss - Während dies wahr ist adressiert nicht alle (besonders ältere) Browser ... und der Kontext der Frage war alles über jQuery :) –

Verwandte Themen