Frage

Ich weiß nicht, ob dies eine wohlbekannte ‚Ding‘ oder etwas Neues in ist, was auch immer Firefox-Version es aktualisiert sich gerade auch - aber in jedem Fall habe ich keine Ahnung, wie für diese Frage Google so werde ich fragen sie hier.

Ich habe ein DIV in meinem DOM, dass ich direkt bin versucht, die von ID zugreifen, in der einfachsten Form wie folgt aus:

 alert(btnTest.id);

Dies funktioniert in allen Browsern gut, aber wurde verursacht Probleme in Firefox, die der Browser in einem fremden ‚gebrochen‘ Zustand führte tatsächlich zu sein.

Der Fehler war ich immer war ‚btnTest nicht definiert ist‘. Ich habe nicht diesen Fehler in Safari, Internet Explorer oder Chrome.

Ich nahm an, ich nicht übereinstimmen HTML-Tags hatte, oder JavaScript geschweiften Klammern oder etwas anderes fehlt. Schließlich nach alles Strippen habe ich versucht, die DOCTYPE zu entfernen. Plötzlich in Firefox (v 3.0.10) fing es an die korrekte ID Rückkehr wie erwartet.

Was ist los !!! ?? Sicherlich ‚strenge‘ Modus sollte mir erlauben genannten Elemente zuzugreifen, und wenn nicht, dann warum alle anderen Browsern mir lassen.

Hinweis: Ich kann mit $ ( ‚# btnTest‘) um es leicht arbeiten [0] .id, das ist, was ich jetzt zu tun haben, bis ich eine herausfinden können, bessere Lösung.

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" class="blueCircles">

 <head>

    <script type="text/javascript"
            src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

    <script>
        $(function() {
            alert("ID retrieved through jQuery: " + $('#btnTest')[0].id);
            alert("ID retrieved by accessing global variable: " + btnTest.id);
        });

    </script>

</head>
<body>
    <div id="btnTest">
    </div>
</body>
</html>
War es hilfreich?

Lösung

Es gibt nichts in irgendeiner W3C-Spezifikation, die Objektreferenzen sagt sollten Elemente mit id Attributen im globalen Scripting Umfang hergestellt werden. Dies gilt als uneccessarily den globalen Namensraum verschmutzen und führen den Bug für das Hinzufügen dieser Unterstützung warum diese wird nicht im Standardmodus unterstützt:

  

Diese Funktion wirkt sich Standard   konformer Code, zum Beispiel   Kontrollen für die Existenz [ sic ] eines globalen   Variable es einrichten nur einmal. Mit   diese Änderung, dass "varible" [ sic ] kann jetzt sein   ein Verweis auf ein Element in der   dokumentieren, und der Code kann nicht funktionieren   die Art und Weise der Entwickler gedacht.

     

Das ist der Grund, warum wir beschlossen zu machen   diese Macken nur.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top