Jörn Hofer: IE - mit und ohne Patch Q822925

Hallo alle,
nach diversen Problemen mit Kunden und JavaScripten die wir mal gebaut haben, habe ich festgestellt, dass ein IE 5.5/6 und ein IE 5.5/6 mit dem Patch Q822925 bei JavaScript href's unterschiedlich referenzieren.

Ein Beispiel:
Eine functions.js liegt im Root-Verz.
Meine Datei liegt im zweiten Unterordner, also z.B. /html/produkte/

In meiner Demo-Datei ist die functions.js eingebunden.
Wenn ich nun per JavaScript eine Funktion der functions.js aufrufe, welche eine location.href Zuweisung besitzt, habe ich früher immer den relativen Pfad genommen, der zu der aufrufenden Seite paßt.
Also wenn ich zu einer Datei im gleichen Ordner wie die Demo-Datei will einfach "dateiname2.html".

Nach dem Patch von Microsoft muß ich den relativen Pfad aus Sicht der functions.js benutzen. Also müßte ich "html/produkte/dateiname2.html" verwenden.

Ist das jetzt nur bei mir so, hab ich nen Brett vorm Kopf oder spinnt MS? (Diskussionen über MS wie böse und nicht böse sie sind, will ich jetzt nicht vom Zaun brechen!).

Das Problem dabei ist ja jetzt: Ich kann nicht abfragen, welcher Patch installiert ist. Also muß ich anfangen alles absolut zu referenzieren *zumindestens in JS*
Bin ich jetzt old School und man benutzt absolute Pfade sowieso schon seit Jahren, oder mach ich meine Links schon bescheuert?

Hat noch jemand Erfahrungen damit gemacht? *oder gab es die Diskussion schon, nur ich hab sie über die Suche nicht gefunden?*

Gruß,
Jörn

  1. Sup!

    Tja, also... ich muß sagen, ich weiß gar nicht, wie Mozilla das z.B. macht, aber ich denke doch, normalerweise gilt als "Working Directory" dasjenige, in der die JS-Datei benutzt wird. Sonst wäre es ja ein Unterschied, ob man die JS-Datei auslagert oder direkt in die Seite einbindet, und das sollte ja gerade nicht der Fall sein, denke ich.

    Ich würde also sagen, daß neue Verhalten des IE ist "falsch".
    Falsches Verhalten muß man natürlich bei Microsoft immer erwarten (*scnr*), also dann viel Spaß beim Umprogrammieren - wenn Du fertig bist, gibt's sicher den nächsten Patch, und alles ist wieder anders.

    Gruesse,

    Bio

    --
    Elite ist mein zweiter Vorname
    1. Sup!

      Tja, also... ich muß sagen, ich weiß gar nicht, wie Mozilla das z.B. macht, aber ich denke doch, normalerweise gilt als "Working Directory" dasjenige, in der die JS-Datei benutzt wird. Sonst wäre es ja ein Unterschied, ob man die JS-Datei auslagert oder direkt in die Seite einbindet, und das sollte ja gerade nicht der Fall sein, denke ich.

      So seh ich das auch, wenn ich die externe Datei einbinde, ist es das gleiche, als wenn ich sie in den Header schreibe.
      Mozilla macht es korrekt.

      Super, jetzt mußte noch anfangen den absoluten Pfad zu parsen, wenn du das gleiche Script für 5 versch. Unterordner benutzen willst, und früher einfach übergeben hast, in welcher Relation es steht.

      Ich freu mich....

  2. Hallo,

    Nach dem Patch von Microsoft muß ich den relativen Pfad aus Sicht der functions.js benutzen. Also müßte ich "html/produkte/dateiname2.html" verwenden.

    Das sollte eigentlich auch so sein, ganz analog zum Prinzip bei externen CSS-Dateien (wo nur Netscape 4.x Pfade relativ zur HTML-Datei adressiert).

    Das Problem dabei ist ja jetzt: Ich kann nicht abfragen, welcher Patch installiert ist.

    Man koennte ueber navigator.appMinorVersion gehen. Darin steht der Inhalt des Strings unter "? | Info | Updateversionen".

    Das Problem ist mir aber noch nicht begegnet.

    MfG, Thomas

    1. Nach dem Patch von Microsoft muß ich den relativen Pfad aus Sicht der functions.js benutzen. Also müßte ich "html/produkte/dateiname2.html" verwenden.

      Das sollte eigentlich auch so sein, ganz analog zum Prinzip bei externen CSS-Dateien (wo nur Netscape 4.x Pfade relativ zur HTML-Datei adressiert).

      Eigentlich ist es doch so, dass die Einbindung einer externen Datei in den Headbereich das gleiche darstellt, als wenn ich die Funktion direkt in den Header eintragen würde.

      Und dann wäre die Referenzierung immer relativ zu der HTML-Seite und nicht zu der *.js-Datei.

      Oder nicht?

      1. Hallo,

        Und dann wäre die Referenzierung immer relativ zu der HTML-Seite und nicht zu der *.js-Datei.

        Warum sollte es bei JS anders als bei CSS-Dateien sein?

        MfG, Thomas

        1. Sup!

          Bei jedem Programm wird das Working-Directory auf dasjenige Directory gesetzt, aus dem heraus das Programm gestartet wurde.

          Warum sollte das bei JS anders sein?

          Nur, damit Deine Lieblingsfirma Microsoft mal wieder Recht hat?

          Gruesse,

          Bio

          --
          Elite ist mein zweiter Vorname
          1. Hallo,

            Bei jedem Programm wird das Working-Directory auf dasjenige Directory gesetzt, aus dem heraus das Programm gestartet wurde.

            Warum sollte das bei JS anders sein?

            Eben genau das hat der OP ja angeblich nach dem Patch beobachtet und ich habe das korrekt gefunden.

            Nur, damit Deine Lieblingsfirma Microsoft mal wieder Recht hat?

            Schwacher Trollversuch.

            MfG, Thomas

  3. Hallo,

    Nach dem Patch von Microsoft muß ich den relativen Pfad aus Sicht der functions.js benutzen.

    das kann ich mit w98 IE6 sp1 u. Patch nicht nachvollziehen.

    Allerdings werden seit dem Patch einige Favicons nicht mehr angezeigt.

    Grüsse

    Cyx23