wahsaga: Forum JS

Beitrag lesen

hi,

Wobei ich mich in dem Falle Frage warum try ... catch?

In dem Falle sollte doch eigentlich eine normale Prüfung ob das Objekt vorhanden ist und erzeugt werden kann genügen.

Nein, ich vermute nicht.

Wenn du dir den Code mal ansiehst:

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.
Da diese aber über ein Active-X-Object initialisiert werden, kannst du mit JS hier m.E. höchstens abfragen, ob ActiveXObject existiert.
Was dieses dann aber macht, in Abhängigkeit der Existenz von Msxml2.XMLHTTP bzw. Microsoft.XMLHTTP, leigt vermutlich außerhalb des Einflussbereiches von JS, bzw. eine vernünftige Schnittstelle zum Abfangen von Fehlern (dass das ActiveXObject false zurückgibt oder so) scheint da nicht vorhanden zu sein.

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.
Hat der IE 4 schon JScript V1.5? Oder, eher wahrscheinlich, kennt seine viel niedrigere Version conditional compilation noch nicht?

Vielleicht könnte man darüber nachdenken, die forum.js vor diesem Versuch, das XML-Request-Objekt zu initialisieren, per window.onerror false zurückgeben zu lassen, um die Fehlermeldung zu unterdrücken? Kann man dann ja nach dieser Anweisung wieder mit window.onerror = ""; auf normal stellen.

gruß,
wahsaga

--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }