Winfried Kaiser: Inkompatibilität JAVASCRIPT IE/Firefox

Ich habe mit Dreamweaver eine "Timeline" erstellt, die eine Grafik über den Bildschirm bewegt.

Technisch verbirgt sich dahinter ein "DIV" in der HTML-Seite, das per JAVASCRIPT-Programm bewegt wird

<div name="Layer1" id="Layer1" style="position:absolute; width:200px; height:115px; z-index:1; left: 1280px; top: 120px">
  <img border="0" src="templates/rufv_soerup/images/dressur.gif" width="126" height="98">
</div>

Im IE funktioniert das auch alles ganz prima, nur beim Firefox funktioniert das nicht!

Die Firefox JAVASCRIPT-Konsole meldet keinen Scriptfehler, die entsprechende JAVASCRIPT-Steuerungsroutine wird auch regelmäßig aktiviert.

Mit dem Firefox JAVASCRIPT-Debugger habe ich das dann weiter untersucht, und festgestellt, dass der Grund für das Problem offensichtlich der ist, dass Firefox JAVASCRIPT kein Objekt für das "DIV" erstellen kann. (Im JAVASCRIPT-Timeline-Code wird dieses Objekt bewegt, aber nur dann, wenn es ein gültiges Objekt ist.)

Der Code für die Objekterstellung bei der Erst-Initialisierung ist folgender (wobei der "ns"-Zweig ausgeführt wird.

if (ns)
  document.MM_Time[0][3].obj = document["Layer1"];
else
  document.MM_Time[0][3].obj = document.all ? document.all["Layer1"] : null;

Ich habe es auch schon mit "document.MM_Time[0][3].obj = document.getElementsByName["Layer1"];" versucht, aber auch das bringt nichts.

Hat jemand eine Idee, wie ich dieses Firefox Problem beheben kann????

  1. Hi,

    <div name="Layer1" id="Layer1" style="position:absolute; width:200px; height:115px; z-index:1; left: 1280px; top: 120px">

    Div hat kein name-Attribut.

    Der Code für die Objekterstellung bei der Erst-Initialisierung ist folgender (wobei der "ns"-Zweig ausgeführt wird.

    Offensichtlich wird ns unsinnig initialisiert.
    Da der Initialisierungscode fehlt, kann Dir leider niemand sagen, was daran unsinnig ist.

    getElementById sollte Dein Problem lösen. Und natürlich eine Code-Weiche, die keinen Unsinn macht (also z.B. eine, die die zu verwendende Methode abfragt und nicht irgendwelche anderen Eigenschaften).

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. Tag Winfried.

    Im IE funktioniert das auch alles ganz prima, nur beim Firefox funktioniert das nicht!

    Das bedeutet in aller Regel, dass der Javascript-Code defekt ist.

    Der Code für die Objekterstellung bei der Erst-Initialisierung ist folgender (wobei der "ns"-Zweig ausgeführt wird.

    Wie wird festgelegt, ob "ns" wahr oder falsch ist?

    document.MM_Time[0][3].obj = document["Layer1"];

    Das ist völlig veraltet und wird m.W.n. von keinem modernen Browser mehr unterstützt.

    document.MM_Time[0][3].obj = document.all ? document.all["Layer1"] : null;

    Das ist Blödsinn, denn alle Browser, die das all-Objekt nicht kennen, werden hier ausgeschlossen.

    Ich habe es auch schon mit "document.MM_Time[0][3].obj = document.getElementsByName["Layer1"];" versucht, aber auch das bringt nichts.

    Sollte es grundsätzlich schon, wenn man es richtig anwendet, siehe
    http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_name.

    Übrigens, was ist eigentlich dieses ominöse document.MM_Time?

    Siechfred

    1. Hallo Siechfred!

      Wie wird festgelegt, ob "ns" wahr oder falsch ist?

      Unter anderem durch das Grundgesetz.

      ℆, ℒacℎ*SCNR*gas

      --
      Bei der intendierten Realisierung der linguistischen Simplifizierung
      des regionalen Idioms resultiert die Evidenz der Opportunität extrem
      apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
      milierter Xenologien konsequent zu eliminieren!
  3. Moin!

    Der Code für die Objekterstellung bei der Erst-Initialisierung ist folgender (wobei der "ns"-Zweig ausgeführt wird.

    Der Code ist uralt! Er hat Verzweigungen für Netscape 4 und IE 4, aber berücksichtigt keinen modernen Browser.

    Aktualisiere mal deinen Dreamweaver, dann gibts auch neue Codeschnippsel. Da manuell eingreifen zu wollen wäre Wahnsinn, dazu ist der Code einfach zu kompakt und ineinander verschachtelt. Eine Änderung zieht wohlmöglich tausend andere nach sich.

    if (ns)
      document.MM_Time[0][3].obj = document["Layer1"];
    else
      document.MM_Time[0][3].obj = document.all ? document.all["Layer1"] : null;

    - Sven Rautenberg

    --
    My sssignature, my preciousssss!