Der folgende Beitrag wurde am 02. 08. 2011, 14:33 Uhr von defiant2369 veröffentlicht.
Hallo,
ich habe innerhalb eines XSL-Dokuments ein JavaScript mit einer Funktion, welches mir als Rückgabewert 'true' oder 'false' liefert. Diese Werte möchte ich gerne als gloable Variable festlegen, damit ich sie im weteren Verlauf des Dokuments abfragen kann mittels "when test".
Geht sowas überhaupt?
Hier das JavaScript:function is200series ()
{
if (navigator.userAgent.search(/4(0[89]|1[01])/)>0)
{return true;}
else {return false;}
}
Als Variable wollte ich das so festlegen:<xsl:variable name="C200">
....
</xsl:variable>
Dei Funktion selber rufe ich im BODY mittels 'onload' auf.
Der folgende Beitrag wurde am 02. 08. 2011, 15:47 Uhr von Kai345 veröffentlicht.

Sorry, zu deinem eigentlichen Problem kann ich leider nichts sagen, aber mir ist die JS-Funktion aufgefallen. Explizite Rückgabe von boolschen Werten in Abhängigkeit einer Bedingung ist nicht notwendig
> function is200series ()
> {
> if (navigator.userAgent.search(/4(0[89]|1[01])/)>0)
> {return true;}
> else {return false;}
> }
>
entsprichtfunction is200series ()
{
return (navigator.userAgent.search(/4(0[89]|1[01])/)>0);
}
(Die Klammern um die Bedingung kann man auch noch weglassen, ich schreibe sie wegen der besseren Les- und Erfassbarkeit des Codes.)
Stur lächeln und winken, Männer!
Kai
--
Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
in Richtung "Mess up the Web".(suit)
SelfHTML-Forum-Stylesheet
Der folgende Beitrag wurde am 02. 08. 2011, 16:50 Uhr von dedlfix veröffentlicht.
Hi!
> Sorry, zu deinem eigentlichen Problem kann ich leider nichts sagen,
Aber ich vielleicht. Variablen in XSL sind quasi Konstanten. Ihr Wert lässt sich nur ein einziges Mal und an einer einzigen Stelle festlegen. Deswegen kann man bedingte Inhalte nicht à la
if (bedingung)
<var name=foo>x</var>
else
<var name=foo>y</var>
notieren, sondern nur nach dem Prinzip
<var name=foo>
if (bedingung)
x
else
y
</var>
Wie auch immer Javascript ein Ergebnis an XSL zurückliefert, es muss innerhalb von <xsl:variable>...</xsl:variable> geschehen.
> return (navigator.userAgent.search(/4(0[89]|1[01])/)>0);
> (Die Klammern um die Bedingung kann man auch noch weglassen, ich schreibe sie wegen der besseren Les- und Erfassbarkeit des Codes.)
Für mich wäre das keine Verbesserung sondern eine Verschlechterung. Klammern, die nicht zwingend aus syntaktischen Gründen gesetzt werden müssen, wie zum Einklammern der if-Bedingung, dienen der Priorisierung eines Teilausdrucks entgegen der Operatorenrangfolge. Ich sehe da also eine Klammer und fange an, nach dem priorisierten Teil zu suchen, und ... April, April ... keiner da, nur ein weiteres Klammernpaar, das bei der Findung von Klammern-Zugehörigkeiten zusätzlich berücksichtigt werden muss.
Lo!
Der folgende Beitrag wurde am 02. 08. 2011, 17:17 Uhr von Kai345 veröffentlicht.

> > return (navigator.userAgent.search(/4(0[89]|1[01])/)>0);
> > (Die Klammern um die Bedingung kann man auch noch weglassen, ich schreibe sie wegen der besseren Les- und Erfassbarkeit des Codes.)
>
> Für mich wäre das keine Verbesserung sondern eine Verschlechterung. Klammern, die nicht zwingend aus syntaktischen Gründen gesetzt werden müssen, wie zum Einklammern der if-Bedingung, dienen der Priorisierung eines Teilausdrucks entgegen der Operatorenrangfolge. Ich sehe da also eine Klammer und fange an, nach dem priorisierten Teil zu suchen, und ... April, April ... keiner da, nur ein weiteres Klammernpaar, das bei der Findung von Klammern-Zugehörigkeiten zusätzlich berücksichtigt werden muss.
Das ist eine Sache der persönlichen Präferenz und des bevorzugten Programmier-Stils, insofern könnte man da ewig diskutieren.
Bei _mir_ ist es so, wenn ich lesereturn navigator.userAgent.search(/4(0[89]|1[01])/)>0;
kann es passieren, daß mein Eyes-to-Brain-Parser nur return navigator.userAgent.search(/4(0[89]|1[01])/) liest. Bei return (... ist die Wahrscheinlichkeit geringer, denn dann schaue ich genauer hin.
Allerdings wäre bei meinem Programmierstil das Scheitern etwas weniger wahrscheinlich, da ich zwingend vor und hinter jedem Operator ein Leerzeichen setze.
Stur lächeln und winken, Männer!
Kai
--
Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
in Richtung "Mess up the Web".(suit)
SelfHTML-Forum-Stylesheet
Der folgende Beitrag wurde am 03. 08. 2011, 21:12 Uhr von molily veröffentlicht.
> kann es passieren, daß mein Eyes-to-Brain-Parser nur return navigator.userAgent.search(/4(0[89]|1[01])/) liest. Bei return (... ist die Wahrscheinlichkeit geringer, denn dann schaue ich genauer hin.
>
> Allerdings wäre bei meinem Programmierstil das Scheitern etwas weniger wahrscheinlich, da ich zwingend vor und hinter jedem Operator ein Leerzeichen setze.
Deshalb würde ich der Einfachheit halber vorschlagen:
return /4(0[89]|1[01])/.test(navigator.userAgent);
;)
(Das macht allerdings etwas anderes als search() > 0, wobei ich vermute, dass > -1 gemeint war, daher obiger Vorschlag.)
Mathias
Der folgende Beitrag wurde am 03. 08. 2011, 11:19 Uhr von defiant2369 veröffentlicht.
> Hi!
>
> > Sorry, zu deinem eigentlichen Problem kann ich leider nichts sagen,
>
> Aber ich vielleicht. Variablen in XSL sind quasi Konstanten. Ihr Wert lässt sich nur ein einziges Mal und an einer einzigen Stelle festlegen. Deswegen kann man bedingte Inhalte nicht à la
>
> if (bedingung)
> <var name=foo>x</var>
> else
> <var name=foo>y</var>
>
> notieren, sondern nur nach dem Prinzip
>
> <var name=foo>
> if (bedingung)
> x
> else
> y
> </var>
>
> Wie auch immer Javascript ein Ergebnis an XSL zurückliefert, es muss innerhalb von <xsl:variable>...</xsl:variable> geschehen.
OK, Danke schonmal für den Hinweis.
Also müßte ich das Script innerhalb der <xsl:variable> ausführen oder wie muß ich mir das vorstellen?
Der folgende Beitrag wurde am 03. 08. 2011, 11:30 Uhr von dedlfix veröffentlicht.
Hi!
> > Wie auch immer Javascript ein Ergebnis an XSL zurückliefert, es muss innerhalb von <xsl:variable>...</xsl:variable> geschehen.
> Also müßte ich das Script innerhalb der <xsl:variable> ausführen oder wie muß ich mir das vorstellen?
Da ich nicht weiß, wie Javascript mit XSL zusammenarbeitet, kann ich das nicht genau beantworten. Wenn es ähnlich wie bei PHP funktioniert, also XSL-Code mit eingebauten Javascript-Code-Inseln, dann: ja, das Script kann innerhalb des xsl:variable-Elements stehen. Jedenfalls muss das Ergebnis dort drin landen.
Lo!
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4