Javascript Anweisung innerhalb eines HTML Tags
Tobel
- xsl
0 Cheatah0 Thomas J.S.
Hallo
Ich generiere aus einer XML Datei eine HTML Datei, in der Popup Fenster per JavaScript aufgerufen werden. Mein Problem ist nun, dass der XSL Prozessor (Saxon 7.4) die Sonderzeichen umwandelt:
XSL Auszug:
<xsl:element name="a">
<xsl:attribute name="href">javascript:void(0)</xsl:attribute>
<xsl:attribute name="onlick">javascript:new popUp(0,0,400,180,"PopupID")</xsl:attribute>
</xsl:element>
HTML Ausgabe:
<a href="javascript:void(0)" onlick="javascript:new popUp(0,0,400,180,"PopupID")"></a>
So kann Javascript die Funktion natürlich nicht mehr ordnungsgemäß aufrufen. Was tun?
Gruss,
Tobel
Hi,
<xsl:attribute name="onlick">javascript:new popUp(0,0,400,180,"PopupID")</xsl:attribute>
ich frage mich, wer wohl einen Link lecken wird ;-)
Erkläre mir des weiteren bitte, was "javascript:" für ein JavaScript-Befehl sein soll. Siehe dazu Archiv.
<a href="javascript:void(0)" onlick="javascript:new popUp(0,0,400,180,"PopupID")"></a>
So kann Javascript die Funktion natürlich nicht mehr ordnungsgemäß aufrufen.
Andererseits würde es auch nicht funktionieren, wenn es onlick="new popUp(0,0,400,180," lauten würde, zumal in <a> das nachfolgende Attribut PopupID";)" erstens nicht existiert, und zweitens ein Gleichheitszeichen benötigt.
Dein XSLT-Prozessor hat sich absolut korrekt verhalten. Der Fehler liegt auf Deiner Seite und ist unabhängig von XSL - auch mit purem HTML würdest Du Fehler bekommen, allerdings erst von JavaScript. Überlege Dir, warum.
Cheatah
Das der Fehler bei mir liegt, ist schon klar. Und das es nicht "onlick" sondern "onclick" heißt auch. Das ist aber nicht die Probelmatik.
Sondern dass das Anführungszeichen in " umgewandelt wird.
Weiterhin ist popID kein Attribut von <a>, sondern ein Attribut der Javascriptfunktion popUp(...).
Hi,
Sondern dass das Anführungszeichen in " umgewandelt wird.
auch darauf bin ich eingegangen. Lies meine Antwort noch mal, und versuche insbesondere die Teile zu verstehen, die Dich verwirren.
Weiterhin ist popID kein Attribut von <a>, sondern ein Attribut der Javascriptfunktion popUp(...).
Ganz besonders den Teil, den genau hier irrst Du - was die Ursache Deines Problems ist.
Cheatah
Hallo,
XSL Auszug:
<xsl:element name="a">
<xsl:attribute name="href">javascript:void(0)</xsl:attribute>
<xsl:attribute name="onlick">javascript:new popUp(0,0,400,180,"PopupID")</xsl:attribute>
</xsl:element>
Warum so viel für so wenig schreiben?
In deinem XSL:
<a href="javascript:void(0)" onClick="javascript:new popUp(0,0,400,180,'PopupID')">was auch immer</a>
Grüße
Thomas
Hi
Warum so viel für so wenig schreiben?
In deinem XSL:<a href="javascript:void(0)" onClick="javascript:new popUp(0,0,400,180,'PopupID')">was auch immer</a>
1. In dem Falle wäre das wahrscheinlich eine gute Lösung. Aber was ist, wenn PopupID den Inhalt eines XML-Elements als Wert zugewiesen bekommen soll.
2. Außerdem gibt es _kein_ JavaScript Sprachelement "javascript:"! Das hat in JavaScript nichts verloren. Bei Links dient es als Ersatz für die Angabe des Protokolls, sodass der Browser weiß, dass er JavaScript ausführen muss.
3. javascript:void(0) als Linkziel ist keine gute Idee. Gibt dem Anwender das Linkziel (mit target="_blank") an und unterdrücke den Aufruf mit return false; falls der Anwender JavaScript aktiviert hat.
Johannes
Hallo,
Warum so viel für so wenig schreiben?
In deinem XSL:<a href="javascript:void(0)" onClick="javascript:new popUp(0,0,400,180,'PopupID')">was auch immer</a>
- In dem Falle wäre das wahrscheinlich eine gute Lösung. Aber was ist, wenn PopupID den Inhalt eines XML-Elements als Wert zugewiesen bekommen soll.
Nach seinem Code sieht das aber nicht so aus, aber wenn doch, dann kann er noch immer onClick per xsl:attribut erzeugen, oder so:
<a href="javascript:void(0)" onClick="javascript:new popUp(0,0,400,180,'{$PopupID}')">was auch immer</a>
Es gibt ebne viele Möglichkeiten, ich wolte ihm nur zeigen, dass es nicht nötig ist HTML Elemente per xsl:element zu erzeugen.
- Außerdem gibt es _kein_ JavaScript Sprachelement "javascript:"!
Das interessierte mich nicht in dem Fall und es wurde ihm schon gesagt ;-)
Grüße
Thomas
Hi Thomas
Es gibt ebne viele Möglichkeiten, ich wolte ihm nur zeigen, dass es nicht nötig ist HTML Elemente per xsl:element zu erzeugen.
Okay, verstanden.
- Außerdem gibt es _kein_ JavaScript Sprachelement "javascript:"!
Das interessierte mich nicht in dem Fall und es wurde ihm schon gesagt ;-)
Und warum hast du es dann nicht einfach gelöscht *g*
Noch einen schönen Abend
Johannes
Hallo Johannes,
- Außerdem gibt es _kein_ JavaScript Sprachelement "javascript:"!
Das interessierte mich nicht in dem Fall und es wurde ihm schon gesagt ;-)
Und warum hast du es dann nicht einfach gelöscht *g*
Weil ich gemein bin?
Oder weil das "kein" Problem war?
[pref:t=42899&m=234506] ;-)
Grüße
Thomas