Doctype
<html>
<head>
<script type="text/javascript">
function init(){
document.getElementById("deineID").…
}
window.onload = init()
>
> Bis hierher wird die Datei vorerst geladen. Jetzt versucht der Browser die Funktion auszuführen um einen eventuellen Rückgabewert von init() zu erhalten. Aber was macht diese? Sie versucht ein, zu diesem Zeitpunkt noch nicht vorhandenes Element zu referenzieren.
>
> Damit das nicht passiert, gibt es 2 spezielle Schreibweisen.
> ~~~javascript
> window.onload = funktionsname
> window.onload = function(){/*beliebiger JS-Code, der erst ausgeführt wird, wenn event in Kraft tritt*/}
>
Ok, das erklärt so manches, da ich das bisher nicht wusste und dachte, die Schreibweisen wären äquivalent.
Zu deinem Opera/Frame - Problem kann ich dir aber nichts sagen, da ich Frames zwar auch mal verwendest habe, zu dieser Zeit jedoch kein JS konnte.
Müssen es denn *unbedingt* frames sein? Es gibt doch genug - deutlich bessere - Alternativen.
Fürs erste müssen es Frames sein wegen Rückwärtskompatibilität. Wenn sich die Zeiten ändern, dann ändert sich auch der Code.
Hast du denn eine Ahnung, wo das Problem wurzelt? Anscheinend ja im Frame, genauer: Vermutlich im HTML-Quellcode des Framesets, denn da ist kein JS drin (außer im No-Frame-Bereich und dasselbe Script ist auch in der Frame-Seite) und was CSS damit zu tun haben sollte, weiß ich wirklich nicht.
Oder aber es liegt an der Zugriffstruktur, dass die Seite aus irgendeinem Grund nicht auf das Objekt window zugreifen darf, wenn es im Frame liegt. Dann weiß ich aber wiederum nicht, wieso der Code funktioniert, sobald man eine Vokabel auf einer anderen Seite eingegeben hat...
Hat jemand eine Idee für ein Workaround?
Vielen Dank,
Ruben