Ergebnis 1 bis 2 von 2

Thema: Dynamic Code

  1. #1
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.998
    Renommee
    283

    Dynamic Code

    Hoi!

    Ich habe folgenden JavaScript-(/HTML-)Code.
    Code:
    <textarea id="stdout"></textarea>
    <script id="script">
            var script = document.getElementById('script');
            var stdout = document.getElementByIId('stdout');
    
            function testing() {
                    stdout.value += "testing();\r\n";
                    alert(script.innerHTML = '');        // zeigt tatsächlich "" an (kein inhalt mehr)
                    // auch schon versucht:
                    script.parentNode.removeChild(script);
            }
    </script>
    <button onclick="testing()">testing()</button>
    Beim ersten click() auf den Button geschieht erwartungsgemäß eine Ausgabe in der <textarea>.

    Danach sollte er den ganzen Script-Inhalt - somit auch die "testing()"-Funktion - einfach löschen.

    Laut Anzeige hat der Browser das auch gemacht. Wenn ich aber erneut auf den Button klicke, so
    wird die "testing()"-Funktion dennoch wiederholt aufgerufen, als sei sie noch vorhanden. Warum?

    Mit der Garbage Collection hängt das wohl weniger zusammen, denke ich: habe kurz auch noch
    das "button.onclick"-Attribut mit einer Ersatz-Funktion beauftragt, danach noch die alte "testing()"-
    Funktion erneut gesetzt. ... wird wieder und wieder aufgerufen.

    Was kann ich da tun?

    Hintergrund: ich wollte einige JavaScript-Codes via WebSocket zum Browser senden (bspw. alle
    mögliche "<canvas>"-Zeichnungs-Funktionalität) - jetzt bin ich aber nicht sicher, ob das "ewig" so
    weiter gehen kann - ich kann ja den Code selbst wieder heraus löschen, aber wenn sämtliche so
    geschehende Aufrufe ("eval()" wohl) irgendwie im Speicher bleiben, entsteht ja ein Müllberg!? ...

    So long; Kekse.

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  2. #2
    Registered User
    Registriert seit
    Sep 2008
    Beiträge
    403
    Renommee
    270

    AW: Dynamic Code

    1) Nutze Dienste ala JSFiddle/JSBin, so kann jeder direkt testen und du selbst siehst auch, ob noch Fehler drin sind (du hast falschen Methodenname für stdout drinne)

    https://jsfiddle.net/ukw1gjdu/

    2) Kommt natürlich auf deine Implementation drauf an, wie du damit über WebSockets zeichnest.

    Wenn du z.B. via nodejs Strings sendest wie

    PHP-Code:
    random_231hs1ah2d3 = function() {
        
    canvas.drawRainbow(0,0,900,600);
    }
    random_231hs1ah2d3()

    random_c275ct52 = function() {
        
    canvas.drawNyanCat(400,300,100,100);
    }
    random_c275ct52() 
    Dann könnte die JS-Engine durchaus nach 300 Stunden Dauerzeichnen irgendwann dein RAM mit Funktionen gefüllt haben. Aber warum sollte deine Implementation "absichtlich" Funktionen leaken?

    Du kannst ja auch einfach sowas senden und mit eval() ausführen, komplett leakfrei:

    PHP-Code:
        canvas.drawRainbow(0,0,900,600);
        
    canvas.drawNyanCat(400,300,100,100); 
    Und die Rainbox/NyanCat Funktionen kannste auch direkt über nodejs senden und zur Canvas-Klasse hinzufügen.

    3) Sollte das nicht gehen, nimmst halt entweder die gleichen globalen Namen für "temporäre" Funktionen oder du sagst dem Garbage Collector einfach, dass es die Funktionen nicht mehr gibt (einfach Objekte mit den Funktionen/Methoden drin auf null/undefined setzen).

    Kommt halt auf deine Implementation drauf an, ich sehe jedoch noch keine. http://www.syntevo.com/smartgit/ + GitHub?

    Brauchst doch nur nodejs und XAMPP z.B. auf deinem Windows, dass kannste in einem Tag schaffen, mit Repo aufsetzen via SmartGit, dass da mal Struktur reinkommt und du deine Arbeit "verlinken" kannst. "Ich würde gerne diesen Commit diskutieren..."
    Über das neue Zeitalter der Gehirne eines Menschen!
    echo 'main() { char z[] = "ping "; for(;printf(z);z[1]^=6); }' > a.c; gcc a.c -o a; ./a # 16.11.2011 02:51

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. dynamic voting
    Von tmy im Forum Datenbanken
    Antworten: 0
    Letzter Beitrag: 08.10.2004, 17:21
  2. Dynamic Array
    Von Dave7 im Forum Pascal / Delphi
    Antworten: 2
    Letzter Beitrag: 27.10.2002, 20:13
  3. Antworten: 1
    Letzter Beitrag: 27.02.2001, 21:27
  4. dynamic-HTML
    Von Degauss im Forum Web Development
    Antworten: 3
    Letzter Beitrag: 17.10.2000, 17:47

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •