function undefined
Martin Hein
- javascript
Halle Forum,
ich habe eine Site mit CSS-Layout programmiert. Das Menü ist
eine verschachtelte Liste. Für ein Hilight onouseover habe
ich ein einfaches javacript geschrieben:
----------------------------------------
var lastobj;
var lastobj_className;
function hover (obj)
{//alert("hover()");
if (obj.className.indexOf("hilite")==-1)
{
if (obj)
{
lastobj_className = obj.className;
lastobj = obj;
obj.className = obj.className+"hilite";
}
}
return true;
}
function unhover ()
{//alert("unhover()");
if (lastobj) lastobj.className = lastobj_className;
return true;
}
----------------------------------------
... das per <li onmouseover="hover(this)" onmouseout="unhover()">
aufgerufen wird. wenn man zu 'hektisch' navigiert, kommt es bei
firefox zu einem fehler: hover() is not defined. ich erkläre mir
das so, dass das script noch nicht fertig geladen ist, wenn man
per klick im menü eine neue seite aufruft und dann sofort der
mouseover eintritt. das ganze passiert auch, wenn ich das script
hart in den head der seite schreibe. die darstellung leidet darunter
nicht. heisst: der mouseover wird ordentlich angezeigt.
ich benötige diesen js-mouseover nur für den internet explorer.
für die anderen browser geht css:hover auch für das listen element
und ich könnte auf das javacript verzichten. kann ich den event,
der z.zt. im tag steht, nach abfrage des browsers per js in das
element schreiben ? wenn ja, wie am saubersten ?
danke und
beste gruesse,
martin
Hallo,
Nutze conditional comments, die gibt es in JavaScript auch:
/*@cc_on
document.write("JScript version: " + @_jscript_version + ".<br>");
/*@if (@_jscript_version >= 5)
document.write("JScript Version 5.0 or better.<br />");
document.write("This text is only seen by browsers that support JScript 5+<br>");
@else @*/
document.write("This text is seen by all other browsers (ie: Firefox, IE 4.x etc)<br>");
/*@end
@*/
Jeena