Avatar billede alvion Nybegynder
27. marts 2001 - 23:21 Der 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;

Er der nogen, der har oplevet noget lignende?

Og ikke mindst: Fundet en løsning på problemet?
Avatar billede blazer Nybegynder
27. marts 2001 - 23:29 #1
arrays?
Avatar billede jakoba Nybegynder
27. marts 2001 - 23:32 #2
Det var da også nogen gevaldige moppedrenge.

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.

mvh JakobA
Avatar billede alvion Nybegynder
28. marts 2001 - 01:14 #3
Jeg har lavet et array af strenge.

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.
Avatar billede jumper Nybegynder
28. marts 2001 - 09:12 #4
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.

Så problemet må være et andet sted.

/Thor
Avatar billede alvion Nybegynder
28. marts 2001 - 09:24 #5
Jamen hvad f*nden er der så galt? Ovenstående kode bruger jeg på et site, og det giver problemer hvis den samlede streng bliver for lang.

Er der en smartere måde at indsætte teksten i DHTML Editoren på?
Avatar billede jumper Nybegynder
28. marts 2001 - 09:34 #6
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
Avatar billede alvion Nybegynder
05. april 2001 - 16:29 #7
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?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester