[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Fehlermeldung bei Skriptausführung

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Fehlermeldung bei Skriptausführung

mb_new
Beiträge gesamt: 129

31. Jul 2024, 17:32
Beitrag # 1 von 8
Bewertung:
(7475 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen!
Ich verwende folgendes Skript, damit der Transparenzfüllraum bei einem neuen Dokument automatisch auf CMYK eingestellt ist.

Code
#targetengine "onAfterOpen" 

main();

function main() {
app.addEventListener("afterOpen", myEventFunction, false);
}
function myEventFunction(myEvent) {

app.documents[0].transparencyPreferences.blendingSpace = BlendingSpace.CMYK;

}


Wenn im InDesign das neue Dialogfeld "Neues Dokument" eingestellt ist, kommt aber folgende Fehlermeldung:

Zitat "Ein angehängtes Skript hat den folgenden Fehler verursacht:
Die Anforderung kann nicht bearbeitet werden, da ein modales Dialogfeld oder eine modale Warnmeldung aktiv ist.
Möchten Sie diesen Ereignis-Handler deaktivieren?"


Lässt sich das irgendwie umgehen?
Wenn der das alte Dialogfeld "Neues Dokument" eingestellt ist, tritt der Fehler nicht auf.

Danke
Martin
X

Fehlermeldung bei Skriptausführung

mb_new
Beiträge gesamt: 129

31. Jul 2024, 17:33
Beitrag # 2 von 8
Beitrag ID: #588640
Bewertung:
(7473 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Was ich noch vergessen habe: Das Skript liegt im Startup Skripte Ordner.

Martin


als Antwort auf: [#588639]

Fehlermeldung bei Skriptausführung

WernerPerplies
Beiträge gesamt: 2779

1. Aug 2024, 08:01
Beitrag # 3 von 8
Beitrag ID: #588641
Bewertung:
(7418 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin,

das Problem dürfte darin bestehen, das der Ereignishandler noch im aktiven Dialog aufgerufen wird.

Probiere mal diese Alternative:
Code
#targetengine "activateEventHandlerr"; 

main();

/*Void*/function main(){
startafterActivateEventHandler(myEventFunction);
/*Void*/function myEventFunction(){
try{
if (app.windows.length > 0){
app.documents[0].transparencyPreferences.blendingSpace = BlendingSpace.CMYK;
}
}
catch (error) {
if (app.eventListeners.itemByName("afterActivateEventHandler").isValid)
app.eventListeners.itemByName("afterActivateEventHandler").remove();
}
return;
}
/*Void*/function startafterActivateEventHandler(/*Function*/callBack){
try {
var /*EventListener*/afterOpenListener = app.eventListeners.itemByName("afterActivateEventHandler");
if (afterOpenListener == null) {
afterOpenListener = app.eventListeners.add("afterActivate", callBack,{name: "afterActivateEventHandler"});
}
}
catch (error) {
if (app.eventListeners.itemByName("afterActivateEventHandler").isValid)
app.eventListeners.itemByName("afterActivateEventHandler").remove();
}
return;
}
}



als Antwort auf: [#588639]

Fehlermeldung bei Skriptausführung

mb_new
Beiträge gesamt: 129

1. Aug 2024, 13:05
Beitrag # 4 von 8
Beitrag ID: #588642
Bewertung:
(7392 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

danke für das Skript.
Jedoch kommt die Fehlermeldung nach wie vor.

Klicke ich die Fehlermeldung mit "Nein" weg, erscheint sie nochmals. Erst danach öffnet sich das neue Dokument.
Der Transparenzfarbraum ist aber nicht eingestellt.

Danke, wenn du bzw. jemand anderer noch eine Idee hat, wie das zu umgehen ist.

lg
Martin


als Antwort auf: [#588641]

Fehlermeldung bei Skriptausführung

WernerPerplies
Beiträge gesamt: 2779

1. Aug 2024, 14:02
Beitrag # 5 von 8
Beitrag ID: #588643
Bewertung:
(7375 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Martin,

schade, bei mir gab es keine Fehlermeldung.

Ganz sicher, dass das andere Skript nicht aufgerufen wird?
Füge doch mal ein
alert("Hallo");
nach dem try in die Funktion "myEventFunction" ein, wird das "Hallo" vor der Fehlermeldung angezeigt?


als Antwort auf: [#588642]

Fehlermeldung bei Skriptausführung

Martin Fischer
  
Beiträge gesamt: 12829

1. Aug 2024, 16:03
Beitrag # 6 von 8
Beitrag ID: #588644
Bewertung:
(7353 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

bist Du auf das event afterOpen fixiert oder könntest Du auch auf afterNew ausweichen?

Nach meinen Beobachtungen ist der Auslöser für ein afterOpen-Event beim Öffnen eines neuen Dokuments nicht wie erwartet ein Objekt "Dokument", sondern ein Objekt "Layoutfenster".

Bei afterNew wird hingegen ein Document als Auslöser gemeldet.

Statt in der Funktion mit mit app.documents[0] direkt ein Dokument anzusprechen, könntest Du das parent des Events abfragen und die Funktion nur dann ausführen, wenn parent des Events ein Dokument ist.

Ein kleines Schnipsel zum Weiterexperimentieren:

Code
#targetengine "session" 

main();

function main()
{
app.addEventListener("afterNew", myEventFunction, false);
$.writeln('Eventlistener installiert.' );
}

function myEventFunction(myEvent)
{
alert('Auslöser: ' + myEvent.parent.constructor.name);
if (myEvent.parent.constructor.name == 'Document')
{
try
{
myEvent.parent.transparencyPreferences.blendingSpace = BlendingSpace.CMYK;
} catch (e)
{
$.writeln(e.message);
}
}
}



als Antwort auf: [#588642]
(Dieser Beitrag wurde von Martin Fischer am 1. Aug 2024, 16:05 geändert)

Fehlermeldung bei Skriptausführung

mb_new
Beiträge gesamt: 129

2. Aug 2024, 10:46
Beitrag # 7 von 8
Beitrag ID: #588648
Bewertung:
(7273 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

@ Werner: ich habe den alert nach try reingetan und der erschein sowohl beim Programmstart und danach 2x wenn ich ein neues Dokument erstelle. Beim neuen Dokument ist der Transparenzfüllraum dann richtig eingestellt.

@ Martin: da müsste ich mich spielen, denn ich möchte gerne haben, dass der Transparenzfüllraum sowohl bei neuen als auch bei bestehenden Dokumenten, die geöffnet werden, eingestellt wird.

Falls meine Versuche alle nichts bringen, werde ich (und meine Kollegen) auf das alte Dialogfeld Öffnen umstellen, denn da funktioniert es einwandfrei.

lg
Martin


als Antwort auf: [#588644]

Fehlermeldung bei Skriptausführung

WernerPerplies
Beiträge gesamt: 2779

2. Aug 2024, 11:16
Beitrag # 8 von 8
Beitrag ID: #588649
Bewertung:
(7265 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Main Martin,

der Eventhandler "afterActivateEventHandler" wird, sowie ich das verstehe, erst bei einem aktiven Layoutfenster aufgerufen.

Das solltest Du verifizieren können, indem Du zwei offene Dateifenster hast und von einem Fenster in das nächst Fenster wechselst.
Dabei sollte jeweils das "Hallo" erscheinen.
Die Transparenzumschaltung wird erst aufgerufen, wenn mindestens ein Dokumentfenster offen ist.

Was die Fehlermeldung angeht, hast Du überprüft, dass wirklich nur mein Skript im Startup-Folder vorhanden ist?


als Antwort auf: [#588648]
X