Zum Inhalt springen

pmkisac: JS-Code verstümmelt

Erstellt am 12. Juli 2009 · 6 Antworten · letzte Antwort am 15. September 2009

Tags: JavaScript & AJAX, Frage

Unbekannter Benutzer ·

Hallo,

ich sitze gerade an einem eigenartigem Problem mit dem pmkisac auto completer. Und zwar ist der JS-Code, der im Head der Seite eingebunden wird, komplett verstümmelt:

$(document).ready(function() {
	var el = $("sword");
	if (el) {
		var form = el;
		for (var i=0;i<20;i++) form="form.parent();" if="" formnodename="FORM" break="" var="" sectionpid="" section="" tx-indexedsearch-selectbox-sectionsxx="" languageid="" language="" tx-indexedsearch-selectbox-langxx="" mediaid="" media="" tx-indexedsearch-selectbox-media="" sword="" autocomplete="" serviceurl:="" indexphpeidpmkisacid10sp="" la="" me="" sw1ml2mc10wc1="" minchars:2="" maxheight:400="" width:166="" callback="" function:="" onselect:="" functionvalue="" data="" alert="" youselected:="" value=""> */

Totaler Schrott... Die Extension bindet das Ganze aber eigentlich richtig ein, also im der "class.tx_pmkisac_init.php" stehts noch richtig. Irgendwas versucht wohl den Code zu komprimieren.

Ich dachte erst, dass die Extension sourceopt da seine Finger im Spiel hat, aber das scheints nicht zu sein. Ich habe pmkisac schon oft eingesetzt, aber ich arbeite zum ersten mal auf TYPO3 4.2.8.
Kanst damit was zu tun haben? Hat jemand eine Idee?

Danke und viele Grüße

theNeo ·

Hallo acleas,
du bis nicht alleine! Ich habe glaube ich das gleiche Problem wie du. Auch Typo3 4.2.8

JS Fehler:

Fehler: missing ; before statement

<script type="text/javascript">
/* <![CDATA[ */
window.addEvent("domready", function(){
	var el = $("tx-indexedsearch-searchbox-sword");
	if (el) {
		var form = el;
		for (var i=0;i<20;i++) form="form.getParent();" if="" formnodename="FORM" break="" var="" sectionpid="section.getValue();" section="$(" tx-indexedsearch-selectbox-sectionsxx="" typesection="element" languageid="language.getValue();" language="$(" tx-indexedsearch-selectbox-langxx="" typelanguage="element" mediaid="media.getValue();" media="$(" tx-indexedsearch-selectbox-media="" typemedia="element" ajaxurl="" completer="new" autocompleterrequesthtmlel="" postdata="" :="" id:="" 1sp:="" sectionpidla:="" languageidme:="" mediaidsw:="" 1ml:="" 2mc:="" 10="" wc:="" 1="" minlength="" 2="" maxchoices="" useselection="" markquery="" inheritwidth="" dropdownwidth="" 100="" multi="" delimeter="" delay="" indicatorclass="" autocompleter-loading="" injectchoice="" functionchoice="" text="choice.getFirst();" value="text.innerHTML;" choiceinputvalue="value;" textset="" html="" thismarkqueryvaluevalue="" thisaddchoiceeventschoice="" sectionaddevent="" change="" function="" completeroptionspostdata="" sp="section.getValue();" languageaddevent="" la="language.getValue();" mediaaddevent="" me="media.getValue();"> */
</script>

Ach ja: mootools_v1.2.1.js

Hat evtl jemand eine Idee? Wäre super!
danke
theNeo
[/quote]

Unbekannter Benutzer ·

Moin,

jap genau! Die Nachricht steht auch bei mir in der Fehlerkonsole...

Ich lasse die Extension allerdings mit dem mitgeliefertem jquery arbeiten.

Grüße

Unbekannter Benutzer · · Beste Antwort

Das ist ja interessant. Ich hab den Fehler gefunden!

Am Anfang des JS-Codes wird steht ein for-loop.

for (var i=0;i<20;i++) {
...
}

Diese Spitze Klammer wird, warum auch immer, als Anfang eines HTML-Tags identifiziert und der Code wird komplett umgebaut.
Als schnellen dreckigen Fix habe ich einfach die Bedingung in der Schleife geändert:

for (var i=0;i!=20;i++) {

Das tritt aber nicht nur bei dieser Extension auf, sondern generell bei allen daten die zu "$GLOBALS['TSFE']->additionalHeaderData" hinzugefügt werden.
Der Fehler wird übrigens verursacht durch "config.xhtml_cleaning = all". Wenn man das raus nimmt sieht der JS-Code korrekt aus. In der TSref steht ja auch, dass die Funktion noch nicht ganz richtig läuft.
Ein Fall für den Bugtracker?

Grüße

theNeo ·

mh ich merke schon du hast da um einiges mehr Plan ;-)
ich suche mir gerade einen Wolf, wo hast du das die Zeile den gefunden

      for (var i=0;i<20;i++) {
      ...
      }

besser gesagt, wo kann ich sie ändern?
#angry#

wäre super wenn du mir kurz auf die Sprünge helfen könntest!
merci
theNeo