Seite 1 von 1

Editor hängt

Verfasst: Fr 27. Mai 2005, 20:26
von conti
v4.45-r1

Hallo,

ich habe festgestellt, dass bei einem simplen Formular

Code: Alles auswählen

<FORM action=index.php method=post>
<INPUT type=hidden value=xxxx name=page>
<INPUT type=hidden value=d6a9a name=xxxx>
<INPUT type=hidden value=1 name=id>
<INPUT type=submit value=OK name=submit>
</FORM>
in dem id vorkommt, der Editor hängt.
Ich kann dann die Container in den Artikeln nicht mehr bearbeiten, da
ein Scriptfehler vom IE ausgegeben wird.

Ich habe einige Zeit gebraucht um das herauszufinden.
Beim testen mit z.B. ix usw. statt id funktioniert das ganze wieder.

Nun ist es so, das ich id unbedingt für mein Formular benötige.

Was könnte man tun, um das glatt zu bügeln.

Re: Editor hängt

Verfasst: Sa 28. Mai 2005, 08:57
von emergence
conti hat geschrieben:Was könnte man tun, um das glatt zu bügeln.
na ja man könnte den fehler beheben...

-> includes/include.con_editcontent.php

findet sich in einer 4.4.5r1

Code: Alles auswählen

        // loop through all elements
        for (var i=0; i < a.length; i++) {
                aId = a[i].id;
                aIdPrefix = aId.substr(0,4);

                // search for the id which containes HTML
                if (aIdPrefix == 'HTML') {

                        // check if its an 'contentEditable' Field
                        if (a[i].isContentEditable == true) {

                                 // read out the content
                                 var aContent = a[i].innerHTML;

                                 // split the idname in data - datas 0 is the Fieldname   2 is the typeid
                                 var data = aId.split("_");

                                 if ( aContent == "" ) {
                                    aContent = "!!";
                                    
                                 } else {

                                    // if there is an | in the text set a replacement chr because we use it later as isolator
                                    while( aContent.search(/\|/) != -1 ) {
                                        aContent = aContent.replace(/\|/,"§%%§");
                                    }
                                 }
                                 
                                 // build the string which will be send
                                 str += idart +'|'+ data[2] +'|'+ aContent +'|'+ data[0] +'||';

                        }
                        
                        
                        
                        
                        
                }

        }
ich würde folgendes verwenden...

Code: Alles auswählen

        // loop through all elements
        for (var i=0; i < a.length; i++) {
                aId = a[i].id;

            if (aId != '' && typeof aId == 'string') {

                aIdPrefix = aId.substr(0,4);

                // search for the id which containes HTML
                if (aIdPrefix == 'HTML') {

                        // check if its an 'contentEditable' Field
                        if (a[i].isContentEditable == true) {

                                 // read out the content
                                 var aContent = a[i].innerHTML;

                                 // split the idname in data - datas 0 is the Fieldname   2 is the typeid
                                 var data = aId.split("_");

                                 if ( aContent == "" ) {
                                    aContent = "!!";
                                    
                                 } else {

                                    // if there is an | in the text set a replacement chr because we use it later as isolator
                                    while( aContent.search(/\|/) != -1 ) {
                                        aContent = aContent.replace(/\|/,"§%%§");
                                    }
                                 }
                                 
                                 // build the string which will be send
                                 str += idart +'|'+ data[2] +'|'+ aContent +'|'+ data[0] +'||';

                        }
                        
                        
                }        
                        
                        
            }

        }
hmm... hab das jetzt aber nur auf einem ie getestet...

wirklich neu ist ja nur diese überprüfung:

Code: Alles auswählen

            if (aId != '' && typeof aId == 'string') {

...

            }
im prinzip werden zwei dinge zusätzlich überprüft
1. ob das html element wirklich keine leere id hat
2. und wenn ja ob die id wirklich ein string ist

Verfasst: Sa 28. Mai 2005, 09:03
von emergence
verschoben nach Bugs 4.5.x -> da es auch mit dem cvs_head auftritt

Verfasst: Sa 28. Mai 2005, 11:44
von conti
Funktioniert jetzt bestens.
Vielen Dank :D

Verfasst: Do 2. Jun 2005, 14:10
von timo
habe das korrigiert.