2016-05-03 12 views
1

ich IE läuft 11 auf meinem Rechner. Ich habe eine Webseite, die getElementsByClassName verwendet. Wenn ich auf die Webseite auf meinem Rechner zugreife, wird die Seite bereitgestellt und es funktioniert gut (es führt getElementsByClassName aus). Wenn ich auf dieselbe Webseite auf einem anderen Computer auch mit IE zugreife und es die Methode getElementsByClassName nicht finden kann. Wenn ich den Code auf dem fehlgeschlagenen Computer auf dem Server speichere und auf diesen zugreife, funktioniert die gespeicherte Seite einwandfrei (sie führt elemmentsByClassName aus). Was ist los? Wie kann ich dem Browser mitteilen, dass er die Version des DOM oder Javascript mit getElementsByClassName verwenden soll?Internet Explorer 11 verhält sich anders auf zwei Maschinen

var list = document.getElementsByClassName("mrClickableRow"); 
+0

den Cache löschen? – Tyr

+0

See: http://stackoverflow.com/questions/7410949/javascript-document-getelementsbyclassname-compatibility-with-ie – BadZen

+0

hinzufügen '' zu '' Ihrer Seite. Sehen Sie sich auch _degrade gracefully_ wie 'if (! Document.getElementsByClassName) ...' –

Antwort

0

document.getElementsByClassName verfügbar ist von IE 9, sind Sie sicher, dass Sie JS mit <script type="text/javascript"> integrieren?

P.S. Verwenden Sie <script> vor dem </body> (body closing tag)

0

Für Kompatibilitätsprobleme können Sie diese Funktion verwenden.

window.getElementsByClassName = function(node, classname) { 
    var a = []; 
    var re = new RegExp('(^|)' + classname + '(|$)'); 
    var els = node.getElementsByTagName("*"); 
    for (var i = 0, j = els.length; i < j; i++) 
     if (re.test(els[i].className)) a.push(els[i]); 
    return a; 
} 

if (!document.getElementsByClassName) { 
    document.getElementsByClassName = function(className) { 
     return window.getElementsByClassName(document.body.parentNode, className); 
    }; 
} 

aber darüber im Klaren sein, dass diese Funktion und die integrierte Funktion etwas anders sind: Wenn Sie die Funktion document.getElementsByClassName in-built verwenden, ist es ein HTMLCollection zurückgibt. Wenn Sie dann die Klasse eines Elements in der HTMLCollection löschen, wird es auch aus der HTMLCollection entfernt.

1

Stellen Sie sicher, dass der IE die richtige Dokumentmodus wird mit Ihrer Seite zu machen, wenn nicht, kann es simulieren und ältere DOM-API, die einige Probleme verursachen können.

öffnen Sie Ihre Entwickler-Tools von F12 in IE schlagen, oder es durch das Einstellungen-Menü auswählen. Gehen Sie dann auf die Registerkarte "Emulation" und sehen Sie sich den Dropdown-Menü "Dokumentmodus" an.

+0

Während die Entwickler-Tools inaktiv sind, verwendet IE immer die neueste installierte Version. Oder kann das irgendwo in den Einstellungen geändert werden? – Aloso

+0

@ Aloso kann es je nach den Kompatibilitätslisten, die für ein bestimmtes Benutzerprofil auf einem bestimmten Computer spezifisch sind, variieren. Alle Websites, die für die Anzeige in der Kompatibilitätsansicht konfiguriert sind, werden wie in IE8 gerendert. – Thriggle