[TYPO3-german] Einbindung von Inline JS code

_doc _doc at freenet.de
Mon Jul 29 17:22:11 CEST 2019


Das funktioniert doch ganz klassisch über das Pageobject 
(https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Setup/Page/Index.html#id2) 


page.1917 = TEXT
page.1917.value = <div id="wasWeissIch"></div>

Warum willst du dafür eine eigene Extension bauen. Das TypoScript in 
eien TYpoScript-Ordner bei deiner Skeleton-Extension schreiben lassen? 
Über eine TypoScript-Condition oder über ein TypoScript-If könntest du 
die Einbindung auch auf bestimmte Seiten beschränken, ...

Mit besten Grüßen

   Dieter




Am 29.07.2019 um 12:53 schrieb Dipl.-Ing. Rainer Schleevoigt:
> Hallo Dieter,
>
> das mit der Asseteinbindung klappt nun.
>
> Jetzt belibt noch ein Restproblem: das Plugin braucht eigentlich nur 
> aus einem leeren DIV mit einer id bestehen. Kann ich das per TS auch 
> mit einbinden? Irgendwie brauche ich doch dann das Contentelement ...
>
> Gruß Rainer
>
>
> PS. Im Moment habe ich dort ein HTML Dings reinegbaut, ich hätte es 
> aber aus Deploymentgründen gerne in der Extension.
>
> On 28.07.19 20:58, _doc wrote:
>> Hallo Rainer,
>>
>> Ja. $count enthält, wenn ich den Code richtig gelesen haben, nur eine 
>> Nummer, die an verschieden Stellen automatisch hochgezählt wird.
>>
>> $NS enthält einen alphanumerischen Prefix., der gut ist, wenn man 
>> z.B. für includeCss einen eindeutigen Namen braucht.
>>
>> Aus der Zahl wird ein String und damit brichst das Script die Logik, 
>> die TYPO3 beim CArray in jsFooterInline erwartet. TYPO3 ignoriert die 
>> Anweisungen vom Skript.
>>
>> Ich habe es nicht durch Tests abgesichert. Auch ist unklar, ob es als 
>> Lösung taugt, weil es zu Überschreibungen kommen könnte. (Wäre aber 
>> eine schöne Übung, um UnitTests zu schreiben....)
>>
>> Mit besten Grüßen
>>
>>     Dieter
>>
>>
>>
>>
>> Am 28.07.2019 um 09:16 schrieb Dipl.-Ing. Rainer Schleevoigt:
>>> Hallo Dieter,
>>>
>>> der Unterschied ist der $NS (namespace)?
>>>
>>> Gruss Rainer
>>>
>>> On 27.07.19 21:23, _doc wrote:
>>>> Dein Script ist falsch.
>>>>
>>>> In 
>>>> https://gist.github.com/AppWerft/f214d2a3eaf70b039b1d7ec047f3a84c 
>>>> müssen die Zeilen
>>>>
>>>> $ts .= " $NS$count.value(\n";
>>>> $ts .= " $NS$count = TEXT\n";
>>>>
>>>> zu
>>>>
>>>> $ts .= " $count.value(\n";
>>>> $ts .= "$count = TEXT\n";
>>>>
>>>> geändert werden.
>>>> Wenn du das Skript mehrfach aufrufst, kann es natürlich Probleme 
>>>> geben, wenn ein dynamisches TypoScript das andere dynamische 
>>>> TypoScript überschreibt.
>>>>
>>>>
>>>> Dieter
>>>>
>>>> Am 27.07.2019 um 17:36 schrieb Dipl.-Ing. Rainer Schleevoigt:
>>>>> Hallo Dieter,
>>>>>
>>>>> jetzt ahben wir also eine Diagnose, fehlt noch die Therapie. 
>>>>> Leider finde ich kein Beispiel:
>>>>>
>>>>> https://www.google.com/search?client=firefox-b-d&q=typoscript+jsFooterInline+sample 
>>>>>
>>>>>
>>>>> Gruss Rainer
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On 27.07.19 17:25, _doc wrote:
>>>>>> Hallo Birgit,
>>>>>> Hallo Rainer,
>>>>>>
>>>>>> ich habe den Code einmal be einer Aufsetzung eingebaut. Er 
>>>>>> funktioniert nicht, weil das TypoScript falsch ist:
>>>>>> https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Setup/Carray/Index.html 
>>>>>>
>>>>>> Ich habe es er verstanden, als ich in 
>>>>>> TYPO3\CMS\Frontend\Http\RequestHandler Zeile 853 dem PHP-Trace 
>>>>>> gefolgt bin und auf die Zeile
>>>>>> $sKeyArray = ArrayUtility::filterAndSortByNumericKeys($setup);
>>>>>> stieß.
>>>>>>
>>>>>> Im CArray von jsFooterInline sind nur Nummern erlaubt (siehe 
>>>>>> oben). Während des PageRendering-Proczesses prüft dies TYPO3 ab 
>>>>>> und übergeht die Information aus dem TypoScript.
>>>>>> Das Gemeine ist, dass der PageObject-Browser dies nicht prüft, 
>>>>>> sondern stumpf das falsche TypoScript-Objekt anzeigt. Man hat 
>>>>>> also den Eindruck, dass das eingegebene TypoScript korrekt ist.
>>>>>> Auch der Template-Analyzer zeigt es nicht als Fehler an.
>>>>>> (TYPO3 9.5)
>>>>>>
>>>>>> Das generierte TypoScript darf also nicht funktionieren.
>>>>>>
>>>>>> Mit besten Grüßen
>>>>>>
>>>>>>     Dieter
>>>>>>
>>>>>> P.S. @Rainer
>>>>>> Es wäre schön, wenn du unter 
>>>>>> https://forge.typo3.org/projects/typo3cms-core/issues ein 
>>>>>> Bug-Ticket schreiben würdest.
>>>>>> der TemplateAnalyse sollte eine Fehlermeldung generieren und der 
>>>>>> der TypoScript-Objektbrowser sollte den Code nicht anzeigen.
>>>>>>
>>>>>>
>>>>>> Am 27.07.2019 um 13:24 schrieb Birgit:
>>>>>>> Hallo Rainer,
>>>>>>>
>>>>>>> hast du im Typoscript Object Browser schon geprüft, ob im 
>>>>>>> letzten Element darüber, das noch ausgeführt wird, eine 
>>>>>>> abschließende Klammer fehlt?
>>>>>>>
>>>>>>> Oder hast dudie folgende Einstellung im config?
>>>>>>>
>>>>>>> With config.removeDefaultJS = external , the inline JavaScript 
>>>>>>> is moved to an external file.
>>>>>>>
>>>>>>>
>>>>>>> viele Grüße
>>>>>>> Birgit
>>>>>>>
>>>>>>>> Am 27.07.2019 um 09:52 schrieb _doc <_doc at freenet.de>:
>>>>>>>>
>>>>>>>> Hallo Rainer,
>>>>>>>>
>>>>>>>> Mein erste Tipp: Klammer zuviel im JavaScript. Module Template: 
>>>>>>>> Prüfe mit dem Typoscript-Objekt-Browser, ob dein Code überhaupt 
>>>>>>>> eingebunden wird, bzw. lasse die dein TypoScript anzeigen, um 
>>>>>>>> gegebenenfalls Syntax- /Klammerfehler zu finden.
>>>>>>>>
>>>>>>>> Mein 2. Tipp: Schreibe oberhalb und unterhalb des Uglifyten 
>>>>>>>> Codes einen JavaScript-Kommentar  oder nutze das 
>>>>>>>> Gleichheitszeichen (Dein Code ist ja einzeilig.)
>>>>>>>>
>>>>>>>> page.jsFooterInline {
>>>>>>>>     hosvirt_20 =TEXT hosvirt_20.value =!function(l){function 
>>>>>>>> e(e){for(var 
>>>>>>>> r,t,n=e[0],o=e[1],u=e[2],f=0,i=[];f<n.length;f++)t=n[f],p[t]&&i.push(p[t][0]),p[t]=0;for(r 
>>>>>>>> in 
>>>>>>>> o)Object.prototype.hasOwnProperty.call(o,r)&&(l[r]=o[r]);for(s&&s(e);i.length;)i.shift()();return 
>>>>>>>> c.push.apply(c,u||[]),a()}function a(){for(var 
>>>>>>>> e,r=0;r<c.length;r++){for(var 
>>>>>>>> t=c[r],n=!0,o=1;o<t.length;o++){var 
>>>>>>>> u=t[o];0!==p[u]&&(n=!1)}n&&(c.splice(r--,1),e=f(f.s=t[0]))}return 
>>>>>>>> e}var t={},p={1:0},c=[];function f(e){if(t[e])return 
>>>>>>>> t[e].exports;var r=t[e]={i:e,l:!1,exports:{}};return 
>>>>>>>> l[e].call(r.exports,r,r.exports,f),r.l=!0,r.exports}f.m=l,f.c=t,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof 
>>>>>>>> Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(r,e){if(1&e&&(r=f(r)),8&e)return 
>>>>>>>> r;if(4&e&&"object"==typeof r&&r&&r.__esModule)return r;var 
>>>>>>>> t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:r}),2&e&&"string"!=typeof 
>>>>>>>> r)for(var n in r)f.d(t,n,function(e){return 
>>>>>>>> r[e]}.bind(null,n));return t},f.n=function(e){var 
>>>>>>>> r=e&&e.__esModule?function(){return 
>>>>>>>> e.default}:function(){return e};return 
>>>>>>>> f.d(r,"a",r),r},f.o=function(e,r){return 
>>>>>>>> Object.prototype.hasOwnProperty.call(e,r)},f.p="./";var 
>>>>>>>> r=window.webpackJsonp=window.webpackJsonp||[],n=r.push.bind(r);r.push=e,r=r.slice();for(var 
>>>>>>>> o=0;o<r.length;o++)e(r[o]);var s=n;a()}([]) }
>>>>>>>>
>>>>>>>> Mit besten Grüßen
>>>>>>>>
>>>>>>>>     Dieter
>>>>>>>>
>>>>>>>>
>>>>>>>> Am 26.07.2019 um 19:32 schrieb Dipl.-Ing. Rainer Schleevoigt:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Das ist ein Teil meines Codes:
>>>>>>>>>
>>>>>>>>> page.jsFooterInline {
>>>>>>>>>      hosvirt_20 = TEXT
>>>>>>>>>      hosvirt_20.value(
>>>>>>>>>   !function(l){function e(e){for(var 
>>>>>>>>> r,t,n=e[0],o=e[1],u=e[2],f=0,i=[];f<n.length;f++)t=n[f],p[t]&&i.push(p[t][0]),p[t]=0;for(r 
>>>>>>>>> in 
>>>>>>>>> o)Object.prototype.hasOwnProperty.call(o,r)&&(l[r]=o[r]);for(s&&s(e);i.length;)i.shift()();return 
>>>>>>>>> c.push.apply(c,u||[]),a()}function a(){for(var 
>>>>>>>>> e,r=0;r<c.length;r++){for(var 
>>>>>>>>> t=c[r],n=!0,o=1;o<t.length;o++){var 
>>>>>>>>> u=t[o];0!==p[u]&&(n=!1)}n&&(c.splice(r--,1),e=f(f.s=t[0]))}return 
>>>>>>>>> e}var t={},p={1:0},c=[];function f(e){if(t[e])return 
>>>>>>>>> t[e].exports;var r=t[e]={i:e,l:!1,exports:{}};return 
>>>>>>>>> l[e].call(r.exports,r,r.exports,f),r.l=!0,r.exports}f.m=l,f.c=t,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof 
>>>>>>>>> Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(r,e){if(1&e&&(r=f(r)),8&e)return 
>>>>>>>>> r;if(4&e&&"object"==typeof r&&r&&r.__esModule)return r;var 
>>>>>>>>> t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:r}),2&e&&"string"!=typeof 
>>>>>>>>> r)for(var n in r)f.d(t,n,function(e){return 
>>>>>>>>> r[e]}.bind(null,n));return t},f.n=function(e){var 
>>>>>>>>> r=e&&e.__esModule?function(){return 
>>>>>>>>> e.default}:function(){return e};return 
>>>>>>>>> f.d(r,"a",r),r},f.o=function(e,r){return 
>>>>>>>>> Object.prototype.hasOwnProperty.call(e,r)},f.p="./";var 
>>>>>>>>> r=window.webpackJsonp=window.webpackJsonp||[],n=r.push.bind(r);r.push=e,r=r.slice();for(var 
>>>>>>>>> o=0;o<r.length;o++)e(r[o]);var s=n;a()}([])
>>>>>>>>>      )
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Es wird nicht sichtbar auf der Webseite, alle andere Includes 
>>>>>>>>> über Files klappen. Was mache  ich nur falsch? Das gleiche 
>>>>>>>>> Problem mit jsFooter. Im TS-Baum wird es richtig angezeigt.
>>>>>>>>>
>>>>>>>>> Gruß Rainer
>>>>>>>>>
>>>>>>>> -- 
>>>>>>>> ---
>>>>>>>>
>>>>>>>> Dr. Dieter Porth
>>>>>>>> Grünenstraße 23
>>>>>>>> D-28199 Bremen
>>>>>>>> Germany
>>>>>>>>
>>>>>>>> +(049) 421 / 51 48 35 48
>>>>>>>> +(049) 160 / 99 18 06 88 (abends/ after 18:00)
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> TYPO3-german mailing list
>>>>>>>> TYPO3-german at lists.typo3.org
>>>>>>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>>>>>> _______________________________________________
>>>>>>> TYPO3-german mailing list
>>>>>>> TYPO3-german at lists.typo3.org
>>>>>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>>>>>>
>>>>>
>>>
>
-- 
---

Dr. Dieter Porth
Grünenstraße 23
D-28199 Bremen
Germany

+(049) 421 / 51 48 35 48
+(049) 160 / 99 18 06 88 (abends/ after 18:00)



More information about the TYPO3-german mailing list