Wie kann ich erreichen, dass das " alert( "Habe fertig");" erst erscheint, wenn das ID5-Dokument komplett geöffnet ist? Also zum Schluß, und nicht wie jetzt am Anfang.
PS: Ich will ein Script erst "loslegen" lassen, wenn das Dokument fertig geöffnet ist. ____________________ Grüße AndreasCAR
Danke für die schnelle Antwort. Wenn die alert-Meldung kommt, ist (siehe Bild) noch das "Neues-Dokument"-Fenster zu sehen. Kann die "alert-Meldung" evtl. noch etwas verzögert werden...?
Aber ich fürchte, das bringt nicht den erhofften Effekt (Meldung erscheint erst, wenn "Neues-Dokument"-Fenster verschwunden ist), sondern es bewirkt nur eine nutzlose Verzögerung.
Viele Grüße Martin
(Dieser Beitrag wurde von Martin Fischer am 6. Dez 2011, 13:35 geändert)
ich hätte jetzt für Pause $.sleep(TimeInMs) vorgeschlagen.
Aber eigentlich wollte ich zum eigentlichen Thema "afterOpen" noch etwas sagen:
Es scheint ganz so, also ob das Event afterOpen bei großen Dokumenten und (großen) IDML-Dokumenten zu früh ausgelöst wird.
Bspw. hatte ich hier einen Fall, das eine IDML-Datei nach afterOpen noch nicht gespeichert werden konnte. Die Fehlermeldung war, dass noch nicht alle Transaktionen abgeschlossen waren. Hier im Forum hatten wir ein ähnliches Phänomen mit der Eigenschat allGraphics, die ebenfalls nicht immer richtig referenziert.
Je nachdem welches Problem Andreas hat, ist dieses nicht lösbar. Wobei deine Pause-Funktion eventuell etwas besser ist, da sie durch den Aufbau dazu führen könnte, dass andere Threads noch weiterlaufen können. Bei $.sleep() scheint mir die komplette Verarbeitung gestoppt zu werden, was eigentlich nie etwas bringt. Das ist jetzt aber reine Spekualtion.
Falls das Problem reproduzierbar besteht bitte den Bug unter:
Ich war knapp dran, auch $.sleep() vorzuschlagen, war mir dann aber spontan unsicher, ob der Core JavaScript Befehl möglicherweise ESKT anstößt, was ich mit dem veröffentlichten Funktionscode (aus fremder Quelle) zu umgehen versuchte.
$.sleep() funktioniert freilich auch. Vermutlich sogar genau so, wie die obige Funktion (also kein Gewinn/Verlust hinsichtlich der Aufgabenstellung).
Hast Du eine Idee, was alles zwischen a) beforeOpen (document) und afterOpen (document) und zwischen b) afterOpen(document) und afterOpen (layoutWindow) passiert?
Habe letzthin ein Logger-Skript entwickelt, das die Dauer des Öffnenvorgangs von Dokumenten unter unterschiedlichen Bedingungen (Links lokal oder auf Server, unterschiedliche Stati) protokolliert. Dabei konnte ich zumindest feststellen, dass die Überprüfung der Schriften und der Links zwischen beforeOpen (document) und afterOpen (document) stattfindet. Geht es in der Phase zwischen afterOpen (document) und afterOpen (layoutWindow) nur ums Rendern des Inhalts des Layoutfensters?
Übrigens wollte es mir in CS5 nicht gelingen, mit beforeOpen (document) Fehlermeldungen bzgl. Schriften und Links zu unterdrücken, um die Bremse der damit verbundenen Dialoge, die einen Benutzereingriff erfordern, zu umgehen.
Den Zustand des UserInteractionLevels habe ich mir vor und nach dem Unterdrücken der Benutzerinteraktion beim beforeOpen-Event (document) angeschaut. Die Zustandsmeldungen entsprachen der Erwartung; die Wirkungen (das Ergebnis) allerdings nicht: die Fehlermeldungen ließen sich nicht unterdrücken.
Hab auch mal auf das Wiederherstellen der Interaktion bei afterOpen (document) bzw. afterOpen (layoutWindow) verzichtet. Es will mir nicht gelingen, bei diesem Event-Skript die Fehlermeldungen bzgl. Schriften und Verknüpfungen zu unterdrücken.
Hast Du eine Idee, wie man diese Blockade durch die Fehlermeldungen mit der Notwendigkeit eines Benutzereingriffs umgehen könnte?
Viele Grüße Martin
(Dieser Beitrag wurde von Martin Fischer am 7. Dez 2011, 08:30 geändert)
was genau passiert weiß ich leider auch nicht. Bis jetzt habe ich die Namen interpretiert und getestet ob das gewünschte erreicht wird - mit nicht immer befriedigendem Ergebnis wie wir inzwischen wissen.
Zur Frage des Benutzereingriffs: Eine andere Idee habe ich leider auch nicht. Wobei ich nicht ganz verstehe was du willst: Du willst nicht global den UserInteractionLevels setzen, sonder nur die Fehlermeldungen bzgl. Schriften und Links nicht mehr anzeigen?
Grüße, Gregor -- Grüße aus Köln, Gregor Fellenz http://www.indesignblog.com
Die Aufgabe lautet: Messung der Dauer des Öffnen-Vorgangs von Dokumenten.
Die Absicht: Anhand des Vergleichs von verschiedenen Parametern (Zahl, Status, Prüfung, Lage/Pfad der Links ...) in einer Liste soll ein Zusammenhang zwischen bestimmten Bedingungen und der Dauer/Langsamkeit des Öffen-Vorgangs ermittelt werden.
Das Problem: Öffnet ein Anwender ein Dokument und geht erst mal einen Kaffee trinken, weil er um die Wartezeit weiß, kann es sein, dass eine Fehlermeldung, die vom Benutzer weggeklickt werden muss, die ermittelte Zeit beim Öffnen eines Dokuments deutlich verfälscht; zumal diese Störung in der Liste nicht festgehalten wird/werden kann.
Das Ziel ist also, eine Störung des regulären Öffnen-Vorgangs durch eine Meldung über fehlende Schriften, fehlende oder nicht aktuelle Verknüpfungen und fehlende Plugins möglichst zu unterdrücken. Außerhalb des Messbereichs von beforeOpen und afterOpen sollen jedoch Meldungen möglich sein.
mit scriptPreferences.userInteractionLevel setzt du fest, wie InDesign sich während des Skript-Ablaufs verhält. Ein Skript läuft aber beim Öffnen nicht, sondern nur während der Event Phase. Für deine Anwendung musst du den Öffnen-Menüeintrag überschreiben. In etwa so:
Keine Garantie, habe es nur kurz getestet.
Funktioniert natürlich nur, wenn der Benutzer immer mit Befehl+O oder dem entsprechenden Menüeintrag öffnet. Bei Drag&Drop oder Doppelklick geht das nicht.
Grüße, Gregor -- Grüße aus Köln, Gregor Fellenz http://www.indesignblog.com
Zumindest beim Öffnen über den Menüeintrag. So könnte man etwa während der Testphase entscheiden, ob das Öffnen protokolliert werden soll oder nicht und entsprechend die Dateien über's Menü üffnen oder durch Doppelklick im Finder.
Danke für den Hinweis und die Skizze.
--- edit: Auch der $.hiresTimer kommt mir gelegen. ;-)
Viele Grüße Martin
(Dieser Beitrag wurde von Martin Fischer am 8. Dez 2011, 08:56 geändert)