2017-06-13 4 views
2

Ich verwende InDesign CC 2017 mit Mac OS X El Capitan und möchte ein Skript in meinem Startup Scripts-Ordner verwenden, um immer eine Überprüfung durchzuführen, wenn ich eine Datei für eine bestimmte Zeichenfolge im Dateipfad dieser Datei öffne. Wenn die Zeichenfolge im Dateipfad gefunden wird, möchte ich dem Benutzer einfach eine Nachricht anzeigen.In InDesign CC 2017 Javascript, wenn ich den eventListener "afterOpen" verwende, wie kann ich die Warnung "Keine Dokumente sind offen" vermeiden?

Nach der Auswahl der Datei zu öffnen, erhalte ich eine Warnung, bevor die Datei geladen wird. "Ein angehängtes Skript hat den folgenden Fehler generiert: Es sind keine Dokumente geöffnet. Möchten Sie diesen Ereignishandler deaktivieren?"

Ich Abbildung mit einem eventListener namens "afterOpen", das Skript würde nicht ausgelöst werden, bis nach dem Öffnen der Datei, in diesem Fall ich denke, ich sollte nicht die Warnung bekommen.

Meine ideale Lösung wäre, die Warnung zu vermeiden, indem ich geeigneteren Code verwende (das ist, was ich hoffe, dass Sie mir helfen können), aber ich wäre auch bereit, jemanden zu zeigen, wie Code einfach hinzuzufügen unterdrücken Sie die Warnung.

#targetengine "onAfterOpen" 

main(); 
function main() { 
    var myApplicationEventListener = app.eventListeners.add("afterOpen",myfunc); 
} 

function myfunc (myEvent) { 
    var sPath = Folder.decode(app.activeDocument.filePath); 

    if(sPath.indexOf("string in path") >= 0){ 
     alert("This file is the one mother warned you about."); 
    } else { 
     alert("This file is good to go!"); 
    } 
} 

Vielen Dank im Voraus für jede Hilfe. :)

Antwort

2

Da die Veranstaltung durch die Objekte Hierarchie Blasen, müssen Sie das Objekt Ereignis Eltern sicher zu bekommen, ist eigentlich das Dokument:

#targetengine "onAfterOpen" 
 

 
main(); 
 
function main() { 
 
\t var ev = app.eventListeners.itemByName ("onAfterOpen"); 
 
\t !ev.isValid && app.eventListeners.add("afterOpen",myfunc).name = "onAfterOpen"; 
 
} 
 

 
function myfunc (myEvent) { 
 
\t 
 
\t var doc = myEvent.parent, sPath; 
 
\t if (!(doc instanceof Document)) return; 
 
\t 
 
\t sPath = decodeURI(doc.properties.filePath); 
 
\t if (!sPath) return; 
 

 
\t alert(/string in path/.test (sPath)? 
 
\t \t "This file is the one mother warned you about." 
 
\t \t : 
 
\t \t "This file is good to go!" 
 
\t); 
 
}

+0

Thanks so much! Das hat perfekt funktioniert. Keine Fehler und das Skript funktioniert genau so, wie ich es möchte. – nollaf126

Verwandte Themen