onclick-Event bearbeiten. IE-Bug
peter
- javascript
Hallo,
ich möchte ein onclick-Event von img bearbeiten:
<img id="preview_link" onclick="printview('/druckansicht.php?pid=114316&type=BRIEF');" title="Vorschau" src="/symbol_preview.gif"/>
---
var preview_link = document.getElementById('preview_link').getAttribute('onclick');
//Ersetze EMAIL gegen BRIEF
preview_link = preview_link.toString().replace('BRIEF','EMAIL');
document.getElementById('preview_link').setAttribute('onclick', preview_link);
---
Leider funktioniert das onclick-event nach der Bearbeitung im IE nicht mehr...
FF läuft alles prima. Was mache ich falsch?
Danke für Hilfe,
peter f.
PS: jquery darf auch genutzt werden...
Mahlzeit peter,
(Was haben bloß alle ständig mit getAttribute() und setAttribute()? Dass der IE damit manchmal ziemliche Probleme hat, sollte doch mittlerweile einigermaßen bekannt sein ...)
<img id="preview_link" onclick="printview('/druckansicht.php?pid=114316&type=BRIEF');" title="Vorschau" src="/symbol_preview.gif"/>
Was machen Leute, die kein Javascript aktiviert haben? Nutze stattdessen z.B. folgende Struktur:
<a href="/druckansicht.php?pid=114316&type=BRIEF" target="_blank"><img id="preview_link" onclick="printview(this.parentNode.href); return false;" title="Vorschau" src="/symbol_preview.gif"/></a>
Dann dürfte nämlich das Manipulieren des entsprechenden Links kein Problem sein:
var preview_link = document.getElementById('preview_link').parentNode.href;
//Ersetze EMAIL gegen BRIEF
preview_link = preview_link.toString().replace('BRIEF','EMAIL');
document.getElementById('preview_link').parentNode.href = preview_link;
PS: jquery darf auch genutzt werden...
Hm - und warum tust *Du* das dann nicht? :-)
MfG,
EKKi
Danke für den 'Workaround' ;-)
Funktioniert...
Gruß,
peter f.
Mahlzeit peter,
(Was haben bloß alle ständig mit getAttribute() und setAttribute()? Dass der IE damit manchmal ziemliche Probleme hat, sollte doch mittlerweile einigermaßen bekannt sein ...)
<img id="preview_link" onclick="printview('/druckansicht.php?pid=114316&type=BRIEF');" title="Vorschau" src="/symbol_preview.gif"/>
Was machen Leute, die kein Javascript aktiviert haben? Nutze stattdessen z.B. folgende Struktur:
<a href="/druckansicht.php?pid=114316&type=BRIEF" target="_blank"><img id="preview_link" onclick="printview(this.parentNode.href); return false;" title="Vorschau" src="/symbol_preview.gif"/></a>
Dann dürfte nämlich das Manipulieren des entsprechenden Links kein Problem sein:
var preview_link = document.getElementById('preview_link').parentNode.href;
//Ersetze EMAIL gegen BRIEF
preview_link = preview_link.toString().replace('BRIEF','EMAIL');document.getElementById('preview_link').parentNode.href = preview_link;
>
>
> > PS: jquery darf auch genutzt werden...
>
> Hm - und warum tust \*Du\* das dann nicht? :-)
>
>
> MfG,
> EKKi
>
Hallo,
Mit dem IE gebe ich mich selber nicht ab, habe aber hier schon oft gelesen, dass der mit setAttribute
gerne rumzickt.
Probier's mal statt
document.getElementById('preview_link').setAttribute('onclick', preview_link);
direkt mit
document.getElementById('preview_link').onclick = preview_link;
Btw, du schreibst tatsächlich die function-body um? Ganz schön verwegen...
Gruß, Don P
Mahlzeit Don P,
document.getElementById('preview_link').onclick = preview_link;
Das wird wenig bringen, da die Javascript-Eigenschaft "onclick" sowohl eine Funktionsreferenz zurückliefert als auch erwartet ... einen einfach String dort zuzuweisen dürfte nicht funktionieren.
MfG,
EKKi
Hallo Ekki,
...einfach einen String dort zuzuweisen dürfte nicht funktionieren.
Ach ja, jetzt ist es ja ein String, ich vergaß. Wie gesagt: Ziemlich verwegen, im Function-Body rumzuschreiben. Auf so eine Idee bin ich bis jetzt noch nie gekommen.
Gruß, Don P
Hi,
...einfach einen String dort zuzuweisen dürfte nicht funktionieren.
Das kommt auf den Browser an.
window.setTimeout("Textliteral, das auszufuehrenden JavaScript-Code enthaelt", 1234) unterstützen alle mir bekannten Browser - einen wirklich trifftigen Grund, bei onclick="Textliteral, ..." nicht analog zu verfahren, kann ich nicht erkennen.
Aber selbst wenn das ein Browser anders sieht, kein Beinbruch -
Wie gesagt: Ziemlich verwegen, im Function-Body rumzuschreiben.
"Sauberer" wird's dadurch natürlich auch nicht. Vernünftig umgesetzt würde man den fraglichen, "auszutauschenden" Inhalt wohl eher als Parameter ausserhalb der Funktion ablegen, so dass diese ihn selber einlesen kann.
MfG ChrisB
@@peter:
nuqneH
<img id="preview_link" onclick="printview('/druckansicht.php?pid=114316&type=BRIEF');" title="Vorschau" src="/symbol_preview.gif"/>
Das ist kein valides HTML:
'&' muss maskiert werden. [HTML401 §B.2.2]
Und das für 'img' zwingend notwendige 'alt'-Attribut fehlt auch.
Qapla'