uepselon: Out of Memory??

Hallo,

wie groß darf in JavaScript eigentlich ein Variable vom Typ String werden? Sprich nach welcher größe ist Schluß und es kommt zu Fehlern?

Ich habe einen String in dem ich dynamisch HTML Code hinterlege und diesen dann per document.write(string) in ein neus Fenster schreibe.

Im IE 5 geht das recht zügig ca 5 sec, in N4.x dauert das zum einen recht lange, bis zu 5 min und es kommt zusätzlich noch ein Fehler "out of memory" in der JavaScript Konsole.

Ist es daher nicht möglich einen String mit ca. 50-200 KB Daten zu füllen? Im IE geht es ja auch problemlos.
Oder sollte ich die Daten in einem Array hinterlegen? Wie groß darf das dann werden?

ueps

  1. Hoi,

    wie groß darf in JavaScript eigentlich ein Variable vom Typ String werden?
    Sprich nach welcher größe ist Schluß und es kommt zu Fehlern?

    Generell ist die Grenze nur durch die Grenzen des Betriebs-Systems gegeben.

    Ich habe einen String in dem ich dynamisch HTML Code hinterlege und diesen
    dann per document.write(string) in ein neus Fenster schreibe.

    Warum schreibst du nicht direkt? Das ginge schneller (der Browser koennte
    schonmal anfangen zu rendern) und du haettest dein RAM-Problem nicht.

    Gruesse,
     CK

    1. Hi CK

      Warum schreibst du nicht direkt? Das ginge schneller (der Browser koennte
      schonmal anfangen zu rendern) und du haettest dein RAM-Problem nicht.

      Hab ich auch schon versucht, nur dann wirds extrem langsam sogar im IE braucht er dann statt 5 sec ca. 2-3 min, keine Ahnung wieso?
      Liegt vielleicht daran, das ich ein neues Fenster aufmache und die Daten vom alten Fenster ins neue schreibe?

      ueps

      1. Hi Y,

        Am besten klappt das nach meinen Versuchen, wenn du den String in etwa 30KByte grosse Stücke aufteilst. Davon 10 Stück werden dann in annehmbarere Zeit gerendert.

        Gruss,
          Carsten

    2. Holladiri

      Ich habe einen String in dem ich dynamisch HTML Code hinterlege und diesen
      dann per document.write(string) in ein neus Fenster schreibe.

      Warum schreibst du nicht direkt? Das ginge schneller (der Browser koennte
      schonmal anfangen zu rendern) und du haettest dein RAM-Problem nicht.

      Weil zumindest der IE da endlos langsam wird (wie uepselon ja schon gesagt hat). Das liegt daran, daß alle "graphischen" Sachen mit JS extrem langsam sind, egal, ob man "nur" ein bißl Text in die Gegend schreibt oder ein paar dutzend Divs durch die Gegend schiebt. Da ist es wesentlich günstiger, erstmal alles in Variablen zu speichern und dann alles auf einen Rutsch zu erledigen. Das ist beispielsweise auch so, wenn man Eigenschaften eines (graphischen) Objektes abfrägt - da geht's wesentlich schneller, wenn man alles (Koordinaten, sichtbarkeit etc.) über Variablen verwaltet.
      Ich hab Stefan zu diesem Thema ja schon ewig 'nen Feature-Artikel versprochen ... ich denke mal, daß ich ihn bis Anfang August vollends fertig bekomme ;-)

      Ciao,

      Harry