nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Re: Abfrage, ob eine Grafik angeklickt worden ist

Von: Thomas 'PointedEars' Lahn (pointedears@web.de) [Profil]
Datum: 02.07.2008 09:36
Message-ID: <486B301B.9070009@PointedEars.de>
Newsgroup: de.comp.lang.javascript
Bernd Harnisch wrot:
> Sascha Hüdepohl schrieb:
>>> Ich muß, innerhalb eines Javascripts abfragen, ob eine Grafik
(Icon)
>>> angeklickt worden ist.
>>
>> Was Du beschreibst scheint mir alles etwas kompliziert.
>> Vielleicht ändert sich ja Dein Ansatz, wenn Du weisst, dass
>> es in JavaScript ein Event-Modell gibt.
> Gut das habe ich verstanden.
>
>> javascriptähnliches Pseudocode-Beispiel:

Es ist völliger Unfug, einem Anfänger mit *kapottem* Code (wie
unten) zu
antworten!  Wie soll er da angesichts der vielen fehlerbehafteten bis
fchsalen Scripting-Tutorials (einschliesslich SELFHTML) lernen, wie es
richtig geht?  Da ist es ja sogar noch besser, gar nicht zu antworten, denn
dann muss der Anfänger nicht auch noch das falsch Erlernte wieder erst
vergessen lernen.

Ich darf in diesem Zusammenhang eine bekannte Netzpersönlichkeit zitieren:

| An dieser Stelle nochmal ein Aufruf an alle: wenn ihr nicht sicher
| seid, dann POSTET HALT NICHT. Es ist niemandem damit geholfen, wenn
| hier hundert Leute ihr Halbwissen posten.
| (FvL in doc, Message-ID: <slrn8moth3.7al.fefe@baileys.convergence.de>)

Und wenn ihr schon trotzdem unbedingt glaubt, die Welt retten zu müssen,
dann schreibt wenigstens dazu, dass ihr nicht ganz sicher seid.  Dazu
genügen schon bekannte Floskeln wie "Quickhack",
"ungetestet" usw.

>> <script>
>> function clickHander() {
>> window.alert("halo");
>> }
>> </script>
>> <img src="icon.png" onclick="clickHandler()">

Und korrekt/sinnvoll/hilfreich sieht es so aus:

<script type="text/javascript">
function clickHandler(o)
{
window.alert(o.src);
}
</script>

<img src="icon.png" alt="Alternativtext"
onclick="clickHandler(this)">

> Wenn so ein Ereignis auftritt (also in diesem Fall onclick), wie werte ich
> dann aus, wo (also in welchem Frame des Framesets) und welches Icon
> angeklickt worden ist, ohne den Script zu verlassen (also eine HTML-Seite
> aufzurufen)

Bitte geh Dich dringend informieren; Dir fehlen offensichtlich wesentliche
(HTML-)Grundlagen, um überhaupt erfolgreich mit (clientseitiger)
Script-Programmierung beginnen zu können.  Was HTML betrifft, ist SELFHTML
da sogar empfehlenswert.  <http://de.selfhtml.org/html/>

1. `onclick' ist kein Ereignis, sondern ein Ereignisbehandler
(Event-Handler).  In diesem Fall ist `onclick' der Name eines
eingebauten (intrinsischen) Event-Handler-Attributs des
img-Elements.  Es wird im Webstandard W3C HTML 4.01 dokumentiert;
(dort wird es allerdings mit der Terminologie nicht so genau
genommen):

<http://www.w3.org/TR/1999/REC-html401-19991224/>
(unter "Translations" gibt es auch eine nicht-normative deutsche
Übersetzung).

Das Ereignis (Event) dazu heisst `click'.  Es ist im Webstandard
W3C DOM Level 2 Events dokumentiert:

<http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113>

2. Es gibt keine "HTML-Seiten".  Das war schon im Original fchsal
(*ein* HTML-Dokument besteht je nach Ausgabemedium aus *mehreren*
Seiten), und es wird durch die deutsche Übersetzung nicht besser.

3. HTML-*Dokumente* werden nicht aufgerufen, denn HTML ist *keine*
Programmiersprache (sondern die Hypertext-Auszeichnungssprache;
HyperText Markup Language); sie werden höchstens gerendert/angezeigt.

Wie Du nun oben siehst, kannst Du im Event-Handler-Attribut den this-Wert
übergeben, um eine Referenz zu dem Objekt zu erhalten, welches das Ereignis
behandelt hat.  (Hierbei handelt es sich soweit bekannt nicht um einen
Standard, sondern um einen historisch gewachsenen Quasi-Standard, der von
allen bekannte Benutzerprogrammen unterstützt wird.)

Dieses Objekt hat Eigenschaften (hier:  src'), die Du auswerten kannst.


HTH

PointedEars
--
Nein. Bei zwei nebeneinander angeordneten Bildschirmen ist der rechte
Rand des linken Bildschirms die Mitte des Desktops. Der rechte Rand des
Desktops ist der rechte Rand des rechten Bildschirms, und da geht es
nicht mehr weiter. (Lars Trebing in darw <3E1C9AC9.6233C9CA@ltrebing.de>)

[ Auf dieses Posting antworten ]