Hallo!
Ich habe ein wenig Sourcecode, der nicht das tut was er soll. Da ich nicht mehr weiß, was ich tun soll,
stelle ich ihn mal hier rein. Viele Augen sehen mehr als zwei :-)
In der HTML-Datei steht folgendes (nur das relavante) im HEAD-Tag:
<SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript">
<!--
if (window.name != 'nav')
{location.href='index.htm'};
// Browser-Check
NS4 = (document.layers);
IE4 = (document.all);
ver4 = (NS4 IE4);
isMac = (navigator.appVersion.indexOf("Mac") != -1);
isMenu = (NS4 (IE4 && !isMac));
/* die folgenden Funktionen werden von den Links aufgerufen und schon hier vordefiniert,
damit auch "alte" Browser das verstehen können.
Die eigentlichen Funktionen werden später im Menüscript re-declared .... */
function popUp(){return};
function popDown(){return};
if (!ver4) event = null;
-->
</script>
<SCRIPT LANGUAGE="JavaScript1.2" TYPE="text/javascript">
<!--
if (isMenu) {
document.write("<SCRIPT LANGUAGE='JavaScript1.2' SRC='menu.js'></SCRIPT>");
}
//-->
</SCRIPT>
....... usw ..............
Die Datei menu.js enthält folgenden Code:
isFrames = true;
mainFrName = "wmain";
TopPosition = 0;
loader = (isFrames) ? (NS4) ? parent : parent.document.body : window;
loader.onload = startIt;
isLoaded = false;
areCreated = false;
menuLoc = null;
function NSunloaded()
{
isLoaded = false;
}
function NSloaded(e)
{
if (e.target.name == mainFrName)
{
startIt();
}
}
function IEunloaded()
{
isLoaded = false;
setTimeout("keepTrack()",50);
}
function keepTrack()
{
if (menuLoc.document.readyState == "complete")
{
startIt();
}
else
{
setTimeout("keepTrack()",50);
}
}
function startIt()
{
isLoaded = true;
menuLoc = eval("parent.frames." + mainFrName);
if (NS4)
{
loader.captureEvents(Event.LOAD);
loader.onload = NSloaded;
menuLoc.onunload = NSunloaded;
}
if (IE4)
{
menuLoc.document.body.onunload = IEunloaded;
}
}
function CreateLayer() {
if (isMenu) {
if (!isLoaded) return;
elStr = "<DIV ID='div1' style='position:absolute; top:30px; left:300px; width:300px; height:400px; background-color:#FFDDDD; color:#660000; font-size:9pt;'></DIV>";
menuLoc.document.body.insertAdjacentHTML("BeforeEnd",elStr);
eval("div1" + "= menuLoc." + "div1");
}
}
************** ENDE menu.js ************************
So ... beim Laden der Seite enthält die Variable "menuLoc" wirklich ein Objekt vom Typ "window" (alert spuckt das wunderbar aus)... prima.
Wird die Funktion CreateLayer() durch ein OnMouseOver-Event aufgerufen .... wird z.B. durch ein alert eine irre Fehlermeldung ausgegeben.
Netscape sagt über javascript: folgendes.
menuLoc.document.body has no properties.
Bezogen auf die Zeile
menuLoc.document.body.insertAdjacentHTML("BeforeEnd",elStr);
in der Funktion CreateLayer.
Warum verliert menuLoc seine Eigenschaften?
Ich werde noch wahnsinnig weil ich den Fehler nicht finde .....
Vielleicht habt ihr ja ne Idee .... wäre wirklich klasse!
Danke schon mal für die Mühen.
Ciao
Jörg