27. marts 2001 - 23:21Der er
6 kommentarer og 1 løsning
Hvor lang kan en Javascript streng være?
Jeg sidder i øjeblikket og arbejder med nogle meget lange strenge i Javascript. Faktisk så lange, at jeg er begyndt at løbe panden mod nogle begrænsninger.
Det ser ud til at der er følgende maksimum grænse for, hvor lang en streng-variabel i javascript må være:
Explorer 5.0: Ingen begrænsning - eller jeg har ikke fundet den
Explorer 5.5: Omkring 128KB, derefter bliver din streng TOM
Explorer 5.5 SP1: Omkring 256KB, derefter bliver din streng TOM
Der er ikke tale om en explicit streng (dvs. at jeg skriver var s = \"bla bla 128KB tekst\";
Istedet er det sammensætning af flere strenge, der hver især måske kun er på 16KB, f.eks. var s = s1 + s2 + ... + s45;
En evt løsning er svær uden at vide hvorfor du ønsker at samle strengene til een. umiddelbart ville jeg lave et array af strenge, og når så strengen kommer over fx 50K klippes 50K af og lagres i en arraycelle mens man fortsætter med resten af strengen.
Problemet er bare, at i sidste ende skal de indsættes i en ActiveX control (helt bestemt MS\' DHTML editor) som en lang streng
Ok, i får hele problemstillingen (i bad selv o det :-)
Jeg har et array af strenge i varablen \"strList\"
Min DHTML Editor ActiveX control hedder \"tbContent\"
Hvis jeg gør følgende:
tbContent.DocumentHTML = \"\"; for (i=0; i<strList.length; i++) tbContent.DocumentHTML += strList[i];
Så sker der det, at for hver gang jeg indsætter en del-streng, så fortolker DHTML Editoren det indsatte og tilføjer de tags der mangler. Sødt gjort men ikke særlig brugbart i mit eksempel. For hvis nu strList[0] og strList[1] henholdsvis slutter og starter med:
\"...bla</t\" \"d><td>bla...\"
Dvs. min tekst er delt op lige midt i en tabeldefinition, så vil control\'en afslutte tabellen, dvs. sætte \"</td></tr></table>\" på.
Derfor bliver jeg nødt til at indsætte hele strengen på én gang. Det gør jeg p.t. således:
tbContent.DocumentHTML = strList.join();
Men der oplever jeg også problemet med max-længde på strenge.
Lad være med at foreslå, at jeg fortolker mine strenge og kun splitter dem mellem hvor en tabel slutter og en ny starter. Jeg har nemlig flere eksempler i min database, hvor en ENKELT tabeldefinition fylder over disse berømte 128KB.
Der er ingen praktisk begrænsning på størrelsen af strenge i Javascript. Arrays kan højst have 2^64 elementer (meget usandsynligt at du har så meget data), og jeg har ikke haft nogen form for problemer med strenge der fyldte langt over 64Mb.
Tja, siden du bruger ActiveX udgaven af DHTML Editoren, er tbContent.DocumentHTML nok det bedste du har. Hvilke problemer er det da at du oplever med disse lange strenge ?
Thor -> Det jeg oplever er, at når jeg indsætter en streng, der er for lang, så vises der ingenting i DHTML Editoren.
Nu siger du \"...siden du bruger ActiveX udgaven af DHTML Editoren...\"
Er der andre udgaver af DTHML Editoren, som man kan bruge istedet?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.