OnMouseOut 2 Varianten, sind Event-Handler JavaScript?
Thomas N
- javascript
Hallo,
was ist denn der Unterschied zwischen dem selfhtml-Beispiel (Dynamische grafische Buttons)http://selfhtml.teamone.de/javascript/beispiele/buttons.htm#quelltext
und meinem aus der VolksHochSchule?
_____________________________________________________________________________________________________
VHS-Bsp.:
<body>
<a href="bereiche.htm"
OnMouseOut="document.bereiche.src='1.jpg'"
OnMouseOver="document.bereiche.src='1b.jpg'">
<img src="1.jpg" border="0" name="bereiche" alt="Bereiche"></a>
</body>
_____________________________________________________________________________________________________
selfhtml-Beispiel:
<head>
<script type="text/javascript">
<!--
Normal1 = new Image();
Normal1.src = "button1.gif";
Highlight1 = new Image();
Highlight1.src = "button1h.gif";
function Bildwechsel(Bildnr,Bildobjekt) {
window.document.images[Bildnr].src = Bildobjekt.src;
}
//-->
</script>
</head>
<body>
<a href="../../../index.htm"
onMouseOver="Bildwechsel(0,Highlight1)"
onMouseOut="Bildwechsel(0,Normal1)"><img src="button1.gif"
width="130" height="30" border="0" alt="Home"></a>
</body>
_____________________________________________________________________________________________________
Warum ist das selfhtml-Beispiel so komplex?
Was bringt mir das gegenüber dem VHS-Bsp. mit seinen "zwei" Zeilen?
Vielleicht soll das selfhtml-Bsp. kompatiebler sein, aber beide Bsp. geben z.B. in meinem NS 2.02 eine
Fehlermeldung (hoffe ich hab keinen Bug gemacht!). In NS3 gehts.
mouseOver sollte doch aber in NS 2 grad noch gehen?
Fehlermeldungen:
1. VHS-Bsp.: (bereiche has no properties).
2. selfhtml-Bsp.: Image is not defined, Highlight1 is not defined.
Ist das 1. VHS-Bsp. überhaupt JavaScript?
Wenn ja, warum muss ich keinen JavaScript-bereich definieren, oder sind Event-Handler alleine schon JavaScript?
In selfhtml heisst es:
"Event-Handler (Ereignis-Behandler) sind ein wichtiges Bindeglied zwischen HTML und JavaScript.
Event-Handler werden meist in Form von Attributen in HTML-Tags notiert. Da es sich um Bestandteile
handelt, die innerhalb von HTML vorkommen, hat das W3-Konsortium die Event-Handler mittlerweile auch
in den HTML-Sprachstandard mit aufgenommen."
Also sind Event-Handler HTML und mein 1. VHS-Bsp. kein JavaScript?
Oder bin ich einfach ein pedantischer DAU? :-(
Thomas N
Ist das 1. VHS-Bsp. überhaupt JavaScript?
Ja. Ein Evanthandler als Elementattribut enthält als Inhalt ein Script:
http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_commonatts
Somit kannst du in ein mouseover beliebige Scripte einfügen und den ganzen Sprachumfang der gegeben Scriptsprache nutzen.
Gruß Herbalizer
Ist das 1. VHS-Bsp. überhaupt JavaScript?
Ja. Ein Evanthandler als Elementattribut enthält als Inhalt ein Script:
Dann ist das ein ---> Script <--- ?
OnMouseOut= ---> "document.bereiche.src='1.jpg'" <---
Somit kannst du in ein mouseover beliebige Scripte einfügen und den ganzen Sprachumfang der gegeben Scriptsprache nutzen.
Der Evanthandler selbst ist aber nicht JavaScript, sondern HTML?
JavaScript-Bereich:
Richtig?
Für Elementattribute brauche ich keinen.
Für Funktionen usw. brauche ich einen.
http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_commonatts
Mit dem Link bin ich, ehrlich gesagt nicht so zurechtgekommen.
Gruß
Thomas N
Hallo Thomas
und meinem aus der VolksHochSchule?
OnMouseOut="document.bereiche.src='1.jpg'"
OnMouseOver="document.bereiche.src='1b.jpg'">
<img src="1.jpg" border="0" name="bereiche" alt="Bereiche"></a>
Normal1 = new Image();
Normal1.src = "button1.gif";
Highlight1 = new Image();
Highlight1.src = "button1h.gif";
function Bildwechsel(Bildnr,Bildobjekt) {
window.document.images[Bildnr].src = Bildobjekt.src;
}
onMouseOver="Bildwechsel(0,Highlight1)"
onMouseOut="Bildwechsel(0,Normal1)"><img src="button1.gif"
width="130" height="30" border="0" alt="Home"></a>
Warum ist das selfhtml-Beispiel so komplex?
Was bringt mir das gegenüber dem VHS-Bsp. mit seinen "zwei" Zeilen?
Erst einmal beide Beispiele sind richtig. Der Unterschied besteht darin, dass im SELFHTML-Beispiel die Bilder bereits vorgeladen werden.
Die sind damit bereits da, wenn der Bildertausch erfolgt. Bei deinem Beispiel werden sie erst geladen, wenn der Mouseovereffekt eintritt.
Gerade bei Menues sind diese kleinen Zeitunterschiede wichtig.
Noch einen Vorteil hat das SELFHTML - Script:
Es kann von jeder beliebigen Stelle aus aufgerufen werden. Von einem anderen Element oder einer einen anderen Funktion.
Dein Script funktioniert immer nur dann, wenn die Maus sich über den Verweis befindet.
Das SELFHTML-Script ist damit vielseitiger einsetzbar.
Vielleicht soll das selfhtml-Bsp. kompatiebler sein, aber beide Bsp. geben z.B. in meinem NS 2.02 eine
Fehlermeldung (hoffe ich hab keinen Bug gemacht!). In NS3 gehts.
mouseOver sollte doch aber in NS 2 grad noch gehen?
Der Netscape 2 kennt das Imageobjekt nicht. Das ist erst seit dem Netscape 3 bzw. dem IE 4 bekannt.
Ist das 1. VHS-Bsp. überhaupt JavaScript?
ja
Wenn ja, warum muss ich keinen JavaScript-bereich definieren, oder sind Event-Handler alleine schon JavaScript?
ebenso
In selfhtml heisst es:
"Event-Handler (Ereignis-Behandler) sind ein wichtiges Bindeglied zwischen HTML und JavaScript.
Event-Handler werden meist in Form von Attributen in HTML-Tags notiert. Da es sich um Bestandteile
handelt, die innerhalb von HTML vorkommen, hat das W3-Konsortium die Event-Handler mittlerweile auch
in den HTML-Sprachstandard mit aufgenommen."
Also sind Event-Handler HTML und mein 1. VHS-Bsp. kein JavaScript?
vereinfacht könnte man sagen, Eventhandler in HTML-Objekte notiert sind Schnittstellen, die HTML und JavaScript miteinander verbinden.
Übrigens gibt es eine ganze Reihe von Eventhandler, die nicht nur an ein HTML-Objekt gebunden sind. Oder eine Objektüberwachung wird mittels JavaScript erzeugt.
Ausserdem ist es nicht zwingend erforderlich, im HTML-Objekt einen Eventhandler zu notieren. Genausogut kann die Überwachung bezüglich eines Elementes von außen erfolgen. Allerdings ist das häufig unpraktisch und unhandlich. Der Eventhandler im HTML-Objekt ist eine der hübschen Erleichterungen die geboten werden.
Wenn du wissen willst, ob dein Script JavaScript ist, dann mache einen einfachen Test. Schalte im Browser JavaScript aus und teste dann dein Script. Du wirst sehen, es geht nicht :-)
Oder bin ich einfach ein pedantischer DAU? :-(
nein, du stelltst nur Fragen. An sich sollte es viel mehr solcher Fragen geben.
Hallo Thomas
und meinem aus der VolksHochSchule?
OnMouseOut="document.bereiche.src='1.jpg'"
OnMouseOver="document.bereiche.src='1b.jpg'">
<img src="1.jpg" border="0" name="bereiche" alt="Bereiche"></a>
Normal1 = new Image();
Normal1.src = "button1.gif";
Highlight1 = new Image();
Highlight1.src = "button1h.gif";
function Bildwechsel(Bildnr,Bildobjekt) {
window.document.images[Bildnr].src = Bildobjekt.src;
}
onMouseOver="Bildwechsel(0,Highlight1)"
onMouseOut="Bildwechsel(0,Normal1)"><img src="button1.gif"
width="130" height="30" border="0" alt="Home"></a>
Warum ist das selfhtml-Beispiel so komplex?
Was bringt mir das gegenüber dem VHS-Bsp. mit seinen "zwei" Zeilen?
Erst einmal beide Beispiele sind richtig. Der Unterschied besteht darin, dass im SELFHTML-Beispiel die Bilder bereits vorgeladen werden.
Die sind damit bereits da, wenn der Bildertausch erfolgt. Bei deinem Beispiel werden sie erst geladen, wenn der Mouseovereffekt eintritt.
Gerade bei Menues sind diese kleinen Zeitunterschiede wichtig.
Noch einen Vorteil hat das SELFHTML - Script:
Es kann von jeder beliebigen Stelle aus aufgerufen werden. Von einem anderen Element oder einer einen anderen Funktion.
Dein Script funktioniert immer nur dann, wenn die Maus sich über den Verweis befindet.
Das SELFHTML-Script ist damit vielseitiger einsetzbar.
Vielleicht soll das selfhtml-Bsp. kompatiebler sein, aber beide Bsp. geben z.B. in meinem NS 2.02 eine
Fehlermeldung (hoffe ich hab keinen Bug gemacht!). In NS3 gehts.
mouseOver sollte doch aber in NS 2 grad noch gehen?
Der Netscape 2 kennt das Imageobjekt nicht. Das ist erst seit dem Netscape 3 bzw. dem IE 4 bekannt.
Ist das 1. VHS-Bsp. überhaupt JavaScript?
ja
Wenn ja, warum muss ich keinen JavaScript-bereich definieren, oder sind Event-Handler alleine schon JavaScript?
ebenso
In selfhtml heisst es:
"Event-Handler (Ereignis-Behandler) sind ein wichtiges Bindeglied zwischen HTML und JavaScript.
Event-Handler werden meist in Form von Attributen in HTML-Tags notiert. Da es sich um Bestandteile
handelt, die innerhalb von HTML vorkommen, hat das W3-Konsortium die Event-Handler mittlerweile auch
in den HTML-Sprachstandard mit aufgenommen."
Also sind Event-Handler HTML und mein 1. VHS-Bsp. kein JavaScript?
vereinfacht könnte man sagen, Eventhandler in HTML-Objekte notiert sind Schnittstellen, die HTML und JavaScript miteinander verbinden.
Übrigens gibt es eine ganze Reihe von Eventhandler, die nicht nur an ein HTML-Objekt gebunden sind. Oder eine Objektüberwachung wird mittels JavaScript erzeugt.
Ausserdem ist es nicht zwingend erforderlich, im HTML-Objekt einen Eventhandler zu notieren. Genausogut kann die Überwachung bezüglich eines Elementes von außen erfolgen. Allerdings ist das häufig unpraktisch und unhandlich. Der Eventhandler im HTML-Objekt ist eine der hübschen Erleichterungen die geboten werden.
Wenn du wissen willst, ob dein Script JavaScript ist, dann mache einen einfachen Test. Schalte im Browser JavaScript aus und teste dann dein Script. Du wirst sehen, es geht nicht :-)
Oder bin ich einfach ein pedantischer DAU? :-(
nein, du stelltst nur Fragen. An sich sollte es viel mehr solcher Fragen geben.
Es sollte nur solche Antworten geben!
Das sind Tips, reich an Inhalt! Du hast aus dem Beitrag ein Kunstwerk gemacht :-)
Jetzt kann ich beruhigt schlafen gehen.
Gute Nacht
Thomas N