Web-Design Beispiel zu den Tutorien HTML für alle Browser und
CSS für alle Browser, onMouseOver
Der Event onMouseOver ist unter Netscape 4 auch bei Divs verfügbar. Dabei ist eine einfache Cross-Browser Strategie möglich, bei einheitlicher Syntax im JavaScript.
Vereinfacht wird die Lösung durch ein einheitliches Ansprechen der Divs. Einbindung als externes JavaScript, Anpassungen und Browserweichen können abgesehen von einer Erweiterung für Opera 4 entfallen, alle Browser erhalten die Zuweisung der Eventhandler mit gleicher Syntax per getElementById.
Die als Hover-Flächen benötigte Divs werden absolut positioniert, sind aber auch für Netscape 4 in einem relativ positioniert (als Ilayer interpretiertem) Div eingebunden. Nun ist es möglich den Event onMouseOver bei den Schaltflächen-Divs abzufragen.
55
56
57
58
59
60
61
62
63
<div id=ilayer>
<div id=ka> ka </div>
<div id=kb> kb </div>
<div id=kc> kc </div>
<div id=kd> kd </div>
</div>Im Unterschied zur direkten Einbindung der Scripte in das HTML bzw. den Div-Tag werden die Divs per Id adressiert. Der Zugriff erfolg hier im Beispiel über getElementById.
Wie schon mit den Entwicklungen getElementById und innerHTML für Netscape 4 ist es aber auch hier möglich mit einem einheitlichen Code per getElementById zu arbeiten. Auch der Internet Explorer 4 wird berücksichtigt. Der Unterschied beim Netscape 4 bgColor statt backgroundColor zu verwenden kann statt einer Lösung bei dem externen Script auch sehr einfach in die nötige Funktion zum Farbwechsel eingebunden werden:
1
2
3
4
5
6
with (document.getElementById(arguments[0]).style)
{ bgColor=backgroundColor=arguments[1];}}
Das einzubindene Script x4-getelementbyid.js erfasst automatisch die Layerebenen und erlaubt eine einheitliche Syntax. Für Netscape 4 ist der Resizebug gleich mit berücksichtigt, ein onload wird bei diesem Script übrigens nicht genutzt, Parameter werden auch nicht benötigt. Für den Internet Explorer 4 wird ebenfalls die Methode getElementById bereitgestellt.
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
function setcx(){with (document.getElementById(arguments[0]).style)
{ bgColor=backgroundColor=arguments[1];}}
document.getElementById('ka').onmouseover=
function(){setcx('ka','silver');};
document.getElementById('kb').onmouseover=
function(){setcx('kb','#ececec');};
document.getElementById('kc').onmouseover=
function(){setcx('kc','red');};
document.getElementById('kd').onmouseover=
function(){setcx('kd','silver');};
document.getElementById('ka').onmouseout=
function(){setcx('ka',"#f9f999");};
document.getElementById('kb').onmouseout=
function(){setcx('kb',"#f999f9");};
document.getElementById('kc').onmouseout=
function(){setcx('kc',"#99f9f9");};
document.getElementById('kd').onmouseout=
function(){setcx('kd',"#9999f9");};
</script>
</body>
</html>Die Angaben für das CSS sind für alle Browser gleich. Lediglich zur vollständigen Färbung der Hintergründe ist für Netscape 4 die layer-background-color ergänzt worden. Zusätzlich wurden die Passagen per Kommnentar vor anderen Browsern versteckt, damit ist der Code W3C-validierbar, nötig ist diese Maßnahme nicht unbedingt da es mit anderen Browsern womöglich eher Interferenzen durch die CSS-Weiche als durch den eigentlichen Code gibt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* Autor 2001 2004 Kristof Lipfert, Duesseldorf */
#ka,#kb,#kc,#kd{width:50px;height:20px;margin:0;
clip:rect(0px 49px 20px 0px);}
#ka{left:0px;}
#kb{left:50px;}
#kc{left:150px;}
#kd{left:200px;}
#kax,#kbx,#kcx,#kdx{top:20px;width:300px;
visibility:hidden;height:150px;}
#ka,#kax{border:.1px solid white;background-color:#f9f999;
/*/*//*/layer-background-color:#f9f999;/* */}
#kb,#kbx{border:.1px solid white;background-color:#f999f9;
/*/*//*/layer-background-color:#f999f9;/* */}
#kc,#kcx{border:.1px solid white;background-color:#99f9f9;
/*/*//*/layer-background-color:#99f9f9;/* */}
#kd,#kdx{border:.1px solid white;background-color:#9999f9;
/*/*//*/layer-background-color:#9999f9;/* */}
#kax {visibility:visible}
#ka,#kb,#kc,#kd,#kax,#kbx,#kcx,#kdx{ position:absolute;}
#ilayer{margin:0;padding:0;left:30%;position:relative;
padding-bottom:220px;width:300px;}© Dipl.-Des.FH Kristof Lipfert Webdesign GbR Düsseldorf 02/2002 Redesign 2004