Netscape 7.x, DIV, IFRAME und kein Ende
geo
- javascript
Hallo alle,
die meisten von euch werden das Problem von den iframes, die trotz gesetzter z-indizes alle divs überdecken kennen. Mittlerweile hat sich die Situation diesbezüglich ja geändert (mit IE5.5 und NS6.??).
Nun stellt sich aber bei den NS7-Browsern folgendes dar:
Wenn ein div einen iframe überlappt, ist der div optisch über dem iframe, wenn ich aber einen onmouseout auf dem div definiere, feuert dieser bereits an den Grenzen des iframe, noch bevor der div verlassen wird. Im IE funktioniert es "richtig".
Es scheint so, als wäre der div im NS lediglich optisch über dem iframe, funktionell aber noch darunter.
Kennt jemand eine Lösung oder gute Erklärung für dieses Problem?
Vielen Dank
Geo
Moin!
Kennt jemand eine Lösung oder gute Erklärung für dieses Problem?
Eine gute Erklärung ist, dass ein IFrame, genau wie Frames, das vorhandene Browserfenster auf oberster Ebene in unabhängige Sektionen zerteilen, die - außer der Tatsache, dass sie Javascript-mäßig über das window-Objekt verbunden sind - nichts miteinander zu tun haben sollten.
Die Tatsache, dass IFrames in dieser Hinsicht aufgeweicht wurden, wird sich spätestens dann rächen, wenn die ersten Hacks fremde Seiten dadurch verunstalten, dass die Fremdseite im 100%-IFrame geladen wird und von außen mit DIVs überlagert wird, die garnicht zu diesem Dokument gehören. Eigentlich müßte hier die Same-Origin-Policy greifen und sowas verhindern - aber wir warten einfach mal bis zum nächsten IE-Hack damit.
Dass der Netscape 7 immerhin nur die Optik "verschandelt", aber wenigstens Benutzer-Interaktionen der Maus dem richtigen Fenster zuordnet, stimmt hoffnungsfroh. So kann man wenigstens keine Mausklicks oder schlimmeres (Formulareingaben für Passworte z.B. - hoffe ich jedenfalls) abfangen.
Und ich habe noch eine gute Erklärung: Ich erkläre nämlich, dass ich den Mißbrauch von IFrames als wohlgefälligen Content-Container nicht gutheiße und absolut verstehen kann, wenn dieses fremde Fenster sich nicht von umgebenden Bereichen überlagern lassen will. Schließlich gibts dazu ja auch Alternativen: Man baut das Dokument einfach serverseitig zu einem einzigen Stück zusammen und kann dann überlagern, wie man will. :)
- Sven Rautenberg
Lieber Sven,
vielen Dank für Deine hilfreiche Antwort.
Ich werde mein windows-verzeichnis in linux umbenennen und künftig nur noch lynx verwenden, da hier dieser Missbrauch überhaupt nicht wirkt.
Weiterhin werde ich versuchen, führendes Mitglied im W3C zu werden um schliesslich zu erreichen, dass dieses böse Ding in der HTML 5.0 -Spezifikation überhaupt nicht mehr auftaucht. Im gleichen Atemzug werde ich mich um die Abschaffung des Object-Elementes bemühen, da dies ja auch dergestalt zu missbrauchen ist (->vielleicht liegt ja hier die Lösung meines Problemes :)
Mit der Same-Origin-Policy werde ich übrigens keine Probleme bekommen, da die in dem iframe darzustellenden files auf dem gleichen Server liegen.
Aber einen nach Deiner Aussage eindeutigen Programmierfehler im Netscape in dieser Weise gutzuschreiben - das sollte ein erfahrener Programmierer wie Du nicht machen.
Geo
Na gut,
da mir keiner helfen kann, muss ich mir halt selber helfen.
Das Problem löst sich - sicherlich nicht auf schöne art und weise - indem man böses mit bösem bekämpft.
Also einen iframe im div definiert - src-Seite serverseitig dynamisch :) aufbauen und scho funzts...
Also Danke an alle die sich gedanken gemacht haben
Gruss
Geo