Geänderte HREF erkennt Funktion nicht an
HaThoV
- javascript
FsmE,
ich ändere das Attribut 'href' eines 'area'-Tags mit:
document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc"))
Das wird auch korrekt übernommen. Allerdings behauptet der Brauser bei Aufruf, die Funktion wäre nicht definiert (obwohl sie es zweifelsfrei ist)
Wer kennt den Grund und weiß möglicherweise Abhilfe?
dankelschonmalschön,
HaThoV
Hi,
document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc"))
Das wird auch korrekt übernommen.
ungewöhnlich. Ich als JavaScript-Engine würde den Syntax-Fehler anmeckern.
Cheatah
FsmE,
document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc"))
Das wird auch korrekt übernommen.
ungewöhnlich. Ich als JavaScript-Engine würde den Syntax-Fehler anmeckern.
Warum?
HaThoV
Hi,
document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc"))
Das wird auch korrekt übernommen.ungewöhnlich. Ich als JavaScript-Engine würde den Syntax-Fehler anmeckern.
Warum?
Weil die Engine nicht weiß, wo der Parameter-String aufhören soll.
cu,
Andreas
FsmE,
Sorry, beim Übertragen das "'" vergessen. Richtig:
document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc")')
und wie gesagt: das Attribut wird übernommen, aber die Ausführung verweigert, weil angeblich die Funktion "funktion()" nicht definiert ist, was aber nicht stimmt. *Das* ist mein Problem.
Hi,
document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc"))
Das wird auch korrekt übernommen.ungewöhnlich. Ich als JavaScript-Engine würde den Syntax-Fehler anmeckern.
Warum?Weil die Engine nicht weiß, wo der Parameter-String aufhören soll.
cu,
Andreas
In sensibus mistis,
HaThoV
Hi,
Sorry, beim Übertragen das "'" vergessen. Richtig:
das ist einer der Gründe, weshalb ein anderes Vorgehen als Copy&Paste sinnfrei ist.
und wie gesagt: das Attribut wird übernommen, aber die Ausführung verweigert, weil angeblich die Funktion "funktion()" nicht definiert ist, was aber nicht stimmt.
Wie hast Du die letztgenannte Behauptung ermittelt?
Cheatah
FsmE,
Wie hast Du die letztgenannte Behauptung ermittelt?
Indem ich ebendiese Funktion selbst geschrieben und ihre Lauffähigkeit auch geprüft habe.
In sensibus mistis,
HaThoV
Hi,
Wie hast Du die letztgenannte Behauptung ermittelt?
Indem ich ebendiese Funktion selbst geschrieben und ihre Lauffähigkeit auch geprüft habe.
Du hast sie geschrieben, sie ist lauffähig. Gut. Aber wie hast Du ermittelt, dass sie _da_ ist?
Nur als kleiner Denkanstoß: Schon nach einem simplen document.write() wäre die Funktion vernichtet, oder bei einem davor auftretenden JavaScript-Fehler gar nicht erst da. Ich will auf die Frage hinaus, ob Du _sicher_ bist, dass nichts dergleichen passiert sein kann.
Cheatah
Hallo Cheatah,
Ich will auf die Frage hinaus, ob Du _sicher_ bist, dass nichts dergleichen passiert sein kann.
Kein document.write, kein vorangegangener JS-Fehler. Und alles andere funktioniert.
In sensibus mistis,
HaThoV
Ich will auf die Frage hinaus, ob Du _sicher_ bist, dass nichts dergleichen passiert sein kann.
Kein document.write, kein vorangegangener JS-Fehler. Und alles andere funktioniert.
also es gibt keinen Fehler und trotzdem funktioniert nichts? Das ist Voodoo.
Worauf Cheatah hinaus will ist, was hast du getetstet?
Meine onclick Variante?
Hast du mal ein simples alert eingebaut?
Oder ein alert( typeof (funktion) )?
Weil so wie du dein Problem beschreibst funktioniert es bei mir.
struppi.
FsmE,
Worauf Cheatah hinaus will ist, was hast du getetstet?
Meine onclick Variante?
Habe sie getestet, durchgeführt und sie funktioniert sowohl auf IE55 als auch auf MOZ16. Dankeschön.
Ich weiß allerdings immer noch nicht, warum ein durch "javascript:..." ersetzter HREF zwar eingetragen wird, aber bei Aktiverung behauptet, die Funktion sei nicht definiert.
also es gibt keinen Fehler und trotzdem funktioniert nichts? Das ist Voodoo.
Wahrscheinlich ist das so :-)
In sensibus mistis,
HaThoV
Hi,
Kein document.write, kein vorangegangener JS-Fehler.
auch kein sonstiges Problem, welches uns zwei beiden gerade nicht einfällt? Hast Du mal versucht, eine Referenz auf die Funktion herauszu-alert()en? Andere Debug-Ausgaben? Tests in verschiedenen Browsern?
Cheatah
Hi,
ungewöhnlich. Ich als JavaScript-Engine würde den Syntax-Fehler anmeckern.
Warum?
ich kann nicht widerstehen, mit Reinhold Messner zu antworten: Weil er da ist.
Cheatah
Hi,
ich kann nicht widerstehen, mit Reinhold Messner zu antworten: Weil er da ist.
Wo ist der Yeti? ;-)
cu,
Andreas
Hi,
[...] Weil er da ist.
Wo ist der Yeti? ;-)
wie ich schon sagte: da! ;-)
Cheatah
hi,
document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc"))
warum willst du eine javascript-funktion über href eines links aufrufen?
absolut pfui-bah.
nutze onClick stattdessen, und stelle wenn möglich im href eine alternative für nutzer ohne JS bereit.
gruss,
wahsaga
Hi,
warum willst du eine javascript-funktion über href eines links aufrufen?
absolut pfui-bah.
im Prinzip ja.
nutze onClick stattdessen, und stelle wenn möglich im href eine alternative für nutzer ohne JS bereit.
Wie viele Nutzer ohne JavaScript kommen Deiner Ansicht nach in den Genuss eines per DOM-Zugriff manipulierten Links? ;-)
Cheatah
hi,
nutze onClick stattdessen, und stelle wenn möglich im href eine alternative für nutzer ohne JS bereit.
Wie viele Nutzer ohne JavaScript kommen Deiner Ansicht nach in den Genuss eines per DOM-Zugriff manipulierten Links? ;-)
deshalb soll er ja bereits _vorher_ im href eine sinnvolle alternative hinterlegen.
gruss,
wahsaga
Hi,
Wie viele Nutzer ohne JavaScript kommen Deiner Ansicht nach in den Genuss eines per DOM-Zugriff manipulierten Links? ;-)
deshalb soll er ja bereits _vorher_ im href eine sinnvolle alternative hinterlegen.
vielleicht hat er das ja und benutzt gerade _deswegen_ den DOM-Zugriff ;-)
Cheatah
FsmE,
vielleicht hat er das ja und benutzt gerade _deswegen_ den DOM-Zugriff ;-)
Du hasts erfaßt!
In sensibus mistis,
HaThoV
FsmE,
Wie viele Nutzer ohne JavaScript kommen Deiner Ansicht nach in den Genuss eines per DOM-Zugriff manipulierten Links?
Die, die einen DOM-fähigen Brauser haben. Die anderen kriegen funktionsfähiges DummHTML.
In sensibus mistis,
HaThoV
FsmE,
warum willst du eine javascript-funktion über href eines links aufrufen?
Weil ich eine ohne JS durchaus lauffähige Version einer HTML-Datei mithilfe von JS aufmotzen will für die Leute, die einen DOM-fähigen Brauser haben.
absolut pfui-bah.
Also nix "pfui bäh"
nutze onClick stattdessen, und stelle wenn möglich im href eine alternative für nutzer ohne JS bereit.
"onclick" hat das Problem, daß der IE55 das nicht ordentlich handelt bei JS-Steuerung.
In sensibus mistis,
HaThoV
Hallo HaThoV
FsmE,
ich ändere das Attribut 'href' eines 'area'-Tags mit:
document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc"))
Ein bisschen kontrollieren, was überhaupt passiert ist nie verkekrt, vor allem wenn nicht das passiert was man erwartet:
var area = document.getElementsByTagName('area');
if(!area || !area[n]) return alert('Fehler');
Daneben willst du ja nicht die Ziel URL ändern, sondern den onclick Event mit einer eigenen Funktion füllen, also mach dies:
area[n].onclick= function()
{
funktion('abc');
return false;
};
Struppi.
Hallo Struppi,
Daneben willst du ja nicht die Ziel URL ändern, sondern den onclick Event mit einer eigenen Funktion füllen, also mach dies:
Dochdoch. Ich will die ursprüngliche URI durch einen JS-Funktionsaufruf *ersetzen* und nicht durch einen "onclick" ergänzen.
In sensibus mistis,
HaThoV
Daneben willst du ja nicht die Ziel URL ändern, sondern den onclick Event mit einer eigenen Funktion füllen, also mach dies:
Dochdoch. Ich will die ursprüngliche URI durch einen JS-Funktionsaufruf *ersetzen* und nicht durch einen "onclick" ergänzen.
Sie wird auch nicht ergänzt. Das return false sorgt dafür das der href teil nicht mehr angesprungen wird.
Struppi.