[TYPO3-german] Einbindung von Inline JS code

_doc _doc at freenet.de
Sun Jul 28 20:58:18 CEST 2019


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