molily: Forum JS

Beitrag lesen

Hallo,

try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
  try {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

Es gibt dummerweise zwei verschiedene Versionen von Microsofts Realisierung dieser JS-XML-Schnittstelle.

Ja, siehe den genannen Link - es gibt nicht nur zwei, es gibt für jede MSXML-Version eine Version. »Microsoft.XMLHTTP« ist aber die Variante, die auf allen MSXML-Versionen laufen soll. In verschiedenen Ajax-Bibliotheken lese ich öfters davon, dass man immer die neueste Version verwenden soll. Daher prüfen viele Bibliotheken verschiedene (bspw.), andere prominente Tutorials benutzen nur die hiesige Konstruktion (1, 2). Aber sehr viele geben sich mit einem einfachen »Microsoft.XMLHTTP« zufrieden.

Was ich allerdings nicht verstehe: Das darüber stehende

/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.

sollte doch wohl eigentlich verhindern, dass ein IE, der nicht mindestens JScript V1.5 "besitzt", den folgenden Code überhaupt beachtet.

Ja, danke euch für den Hinweis. Das try .. catch rund um window.open() war der Übeltäter, das try .. catch bei new ActiveXObject() halte ich zwar auch für unnötig, aber das ist nicht so wichtig.

Mathias