Zum Inhalt springen

Javascript per TypoScript Wrappen

Erstellt am 26. Februar 2015 · 4 Antworten · letzte Antwort am 2. März 2015

Tags: JavaScript & AJAX, TYPO3 6.x, Frage

dfluess ·

Hallo,

ich möchte Javascript direkt per wrap in den Body-Content (tt_content.image.20. . .) einfügen. Das habe ich unter anderem so versucht:

tt_content.image.20.rendering.splitCaption {
  allStdWrap.dataWrap.append = TEXT
  allStdWrap.dataWrap.append.value = <script>mein JavaScript</script>
}

Der Script-Tag wird auch eingefügt aber der JavaScript-Code ist unvollständig:
Aus:

jQuery("#slider-container1").slider({effect:"fadel",duration:20*100,delay:20*100,width:960,height:300,autoPlay:true;});

Wird:

jQuery("#slider-container1").slider();

Die Parameter werden via Contstants eingesetzt. Kann mir jemand erklären, wieso der JS-Code nicht so eingesetzt wird? Wie kann ich den Code 1:1 wrappen?

Danke für eure Hilfe!

toifel ·

{xy} wird im dataWrap automatisch geparsed, da Typoscript hier Daten erwartet, die immer im Format {xy} angegeben werden.

dfluess ·

OK Danke, dass ist einläutend.
Ich suche aber auch noch eine andere Möglichkeit.

Tatsache ist in diesem Fall außerdem, das JavaScript-File im Body einzubinden damit es funktioniert. Gibt es eine Möglichkeit, eine JavaScriptDatei direkt nach dem Body-Tag einzubinden?

auf so etwas wie:
page.1 = TEXT
page.1.value = <script>script.js</script>
möchte ich gern verzichten, da es unabhängig von der PAGE Konfiguration funktionieren soll und außerdem die Komprimierung dann nicht greift.

Es gibt über TypoScript schon diese Möglichkeiten:
includeJSFooter
includeJSFooterlibs

Dann befindet sich der Aufruf zwar wie gewünscht im Body, aber eben ganz unten im Footer vor dem </body>
Es muss aber am Anfang direkt nach <body> aufgerufen werden.

Kennt jemand eine Möglichkeit?

Chrissli ·

Auch wenn das deine Frage nicht beantwortet: Warum muss den das Javascript genau an dieser Stelle eingebunden werden?
Normalerweise kommt sowas doch in den head-Tag oder wie du selbst gesagt hast, ans Ende vor den schliessenden body-Tag, je nachdem ob die Ausgabe zum Zeitpunkt der Ausführung bereits fertig sein muss oder nicht. Normalerweise JS-Code sollten diese beiden Möglichkeiten doch genügen?

dfluess ·

Hallo,
aus irgend einem Grunde funktioniert das Script nur wenn es im Body eingebunden ist.
Es geht um einen jQuery-Slider, der aus 2 Scripts besteht. Die Configuration im Slider überschreibt den Standard im slider.js

So in etwa..

<head>
jQuery.js
</head>

<body>
Slider.js

<slider>
config.js
</slider>

</body>

Das config.js muss individuell zum jeweiligen Slider mit einer eigenen ID geparst werden, damit mehrere auf einer Seite möglich sind.

Keine Ahnung, wieso ein JS nur aus dem body funktioniert(?)