Hallo, ich versuche gerade den EventListener zu verstehen. Dazu habe ich folgendes Beispiel: Es soll nach dem Platzieren einer Textdatei eine weitere function ausgeführt werden. Dazu nutze ich ja afterPlace. Die function fängt aber schon an, bevor die Platzierung abgeschlossen worden ist. Hier mal der Code:
Ich würde aber gern, dass erst etwas geschieden, nachdem auch der Text im TR gesetzt ist.
Frage 2: Wie lösche ich den Event, damit? In dem Beispiel wird der Dialog immer öfter ausgeführt, wenn ich das Script öfters starte. An welcher stelle setze ich
1. Das Platzieren ist schon abgeschlossen, setz mal einen Brechpunkt in _place und probiere in der ESTK Konsole:
Result: 272
Gegebenenfalls läuft der Umbruch noch verzögert, in dem Fall kannst Du nachhelfen:
Die Bildschirmdarstellung wird dabei aber noch immer nicht aktualisiert, das kommt erst nach dem Ende des Scripts, aber auch mit dem alert wenn er nach dem recompose() ausgeführt wird.
2. Das ist eigentlich schon der richtige Code. Bei der zweiten Ausführung des Scripts zeigt der Name "_place" aber bereits auf die neue Version dieser Funktion, damit bleibt der alte EventListener aktiv.
Während der Entwicklung hilft
vor dem addEventListener.
Das sollte man aber beim fertigen Script rausnehmen, die EventListener werden nämlich unabhängig von der Targetengine verwaltet und so für alle Scripts gelöscht.
Hallo, kannst Du mir den 'Brechpunkt' genauer erklären? Damit es klarer wird, was ich möchte, habe ich mal mein Script beigefügt.Nicht das gelbe vom Ei, aber egal ;-) Was macht das Script: Es soll das Hinzufügen und bearbeiten von Platzhaltertext vereinfachen. Den Schritt "Neuer Textrahmen" möchte ich gern so haben, dass nach dem Platzieren des Textes der Textrahmen mit dem PHT aktualisiert wird, also der Klick auf die Schaltfläche 'Aktualisieren' erspart wird. --- Viele Grüße Mario
Wenn ein Script in einem Debugger ausgeführt wird - also über das ExtendScript Toolkit oder neuerdings auch über VSCode, kann man den Ablauf unterbrechen, Variable betrachten, einzelne Befehle in der Konsole ausführen und danach das Programm fortsetzen, auch in einzelnen Schritten.
Mit einem "breakpoint" hält man die Ausführung eines Scripts an einer Zeile an. Den Breakpoint setzt Du durch einen Klick am linken Rand des Editors, es erscheint dann ein roter Punkt. Alternativ ruft auch der Befehl $.bp() im Code den Debugger auf.
Im "JavaScript Tools Guide CC.pdf" - über das Hilfe-Menü des ESTK zu erreichen - steht noch viel mehr zum eingebauten Debugger.
Wie gesagt, kannst Du dann in ESTK Fenstern die Variablen betrachten, aber auch über die Konsole Befehl ausführen. Wenn ein Breakpoint in der Funktion _place() erreicht wird, gibt zum Beispiel der Ausdruck "_event.target.contents.length" die Länge des Inhalts des neuen Textrahmens aus. 272 Zeichen - der Rahmen ist eindeutig nicht leer, auch wenn der Bildschirm noch nicht aktualisiert wurde.