Hallo,
… oder aber (entgegen der Empfehlungen, die ich fand) Klammern hinter die Funktion setze:
window.onload=init()
Das bringt nun aber merkwürdigerweise mit sich, dass (weder in FF noch in Opera) irgendwelche Dokumenteigenschaften gelesen werden können. Der Fehler der auftritt, sobald die Funktion versucht etwas auf der document.-Ebene zu ändern, tritt nicht auf, wenn ich die Klammern weglasse. alert() und andere Sachen, die nicht auf document./Unter-Ebene stattfinden, funktionieren.
So, wie du es gemacht hast (also ohne Klammern), ist es in diesem Fall auch richtig. Wenn du die Funktion mit Klammern schreibst, wird sie nämlich sofort ausgeführt. Deshalb kannst du auch nicht viel aus deinem document lesen. Beispiel:
########
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*/}
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.
mfg. Daniel