Axel Richter: Methode .click() im Objekt nicht erreichbar

Beitrag lesen

Hallo,

warum haben mein Objekte nicht die Methode click()? Ich habe verchiedene Links (nennen wir sie "mein_link"), die per JavaScript in die Seite geschrieben werden und diese haben wiederum ein href="javascript:meine_funktion()". Das funktioniert soweit prächtig, wenn ich mit der Maus auf den Link klicke. Wenn ich aber nun den gleichen Link von irgendwoher aufrufe und mit mein_link.click() per JavaScript "anklicken" will, kommt die Fehlermeldung "mein_link.click is not a function". Hä???

Wo steht, dass HTMLAnchorElemente standardmäßig eine Methode .click() haben?

Und jetzt der Hammer: wenn ich diesen Objekten (Links) bei deren Erstellung zusätzlich dies zuweise:

mein_link.click = function(){alert("hallo")}

dann haben sie wieder die Clickmethode. Ich kann dann per Fernsteuerung der Link "anklicken" und der Alert kommt auch. Was ist da faul?

Nichts. Du hast dem einen Element eine eigene zusätzliche Methode .click() zugewiesen. Das darfst Du gerne tun. In vollständig DOM-kompatiblen Browsern (Geckos, neuer Opera) kannst Du sogar dem Prototyp aller HTMLAnchorElemente eine solche Methode zuweisen:

  
HTMLAnchorElement.prototype.click = function() {if (this.href) window.location.href = this.href};  

Der IE kann das nicht.

Allerdings kannst Du statt mein_link.click() ja auch

  
if (mein_link.href) window.location.href = mein_link.href;  

schreiben.

viele Grüße

Axel