Inkompatibilität JAVASCRIPT IE/Firefox
Winfried Kaiser
- javascript
0 MudGuard
0 Siechfred0 Lachgas
1 Sven Rautenberg
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????
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
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
Hallo Siechfred!
Wie wird festgelegt, ob "ns" wahr oder falsch ist?
Unter anderem durch das Grundgesetz.
℆, ℒacℎ*SCNR*gas
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