2017-06-13 1 views
2

J'utilise InDesign CC 2017 avec Mac OS X El Capitan, et je veux utiliser un script dans mon dossier Startup Scripts pour toujours effectuer une vérification chaque fois que j'ouvre un fichier pour une certaine chaîne dans le chemin de fichier de ce fichier. Si la chaîne est trouvée dans le chemin de fichier, je veux simplement montrer un message à l'utilisateur. Après avoir choisi le fichier à ouvrir, j'obtiens un avertissement avant le chargement du fichier. "Un script joint a généré l'erreur suivante: Aucun document n'est ouvert. Voulez-vous désactiver ce gestionnaire d'événements?" Je figure avec un eventListener nommé "afterOpen", le script ne serait pas déclenché qu'après l'ouverture du fichier, auquel cas je ne devrais pas recevoir l'avertissement.Dans InDesign CC 2017 javascript, lors de l'utilisation de eventListener "afterOpen", comment puis-je éviter l'avertissement "Aucun document n'est ouvert"?

Ma solution idéale serait d'éviter l'avertissement en utilisant un code plus approprié (c'est ce que j'espère que vous pouvez m'aider avec), mais je voudrais aussi que quelqu'un me montre comment ajouter du code simplement supprimer l'avertissement.

#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!"); 
    } 
} 

Merci d'avance pour toute aide. :)

Répondre

2

Lorsque l'événement dans la hiérarchie des objets, vous devez obtenir que l'objet parent de l'événement est en fait le document:

#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

Merci beaucoup! Cela a fonctionné parfaitement. Pas d'erreurs et le script fonctionne comme je veux. – nollaf126