2017-06-13 16 views
2

私はMac OS X El CapitanでInDesign CC 2017を使用しています。そのファイルのfilePathにある特定の文字列のファイルを開くたびに、常にStartup Scriptsフォルダ内のスクリプトを使用してチェックを実行します。文字列がfilePathに見つかった場合は、単にユーザーにメッセージを表示するだけです。InDesign CC 2017 javascriptでは、eventListener "afterOpen"を使用しているときに、「文書が開いていません」という警告を回避するにはどうすればよいですか?

ファイルを選択して開くと、ファイルがロードされる前に警告が表示されます。 "添付されたスクリプトが次のエラーを生成しました:ドキュメントが開いていません。このイベントハンドラを無効にしますか?"

"afterOpen"という名前のeventListenerを使用すると、ファイルが開かれるまでスクリプトは起動されません。この場合、警告が表示されないはずです。

私の理想的な解決策は、より適切なコードを使用して警告を回避することです(これは私があなたを助けてくれることを望んでいます)。しかし、誰かにコードを単純に追加する方法を教えてもらえます警告を抑止してください。

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

ご協力いただきありがとうございます。 :)

答えて

2

イベントは、オブジェクト階層を気泡として、あなたはイベントの親オブジェクトが実際に文書であることを確認取得する必要があります:

#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

本当にありがとうございました!これは完全に機能しました。エラーはなく、スクリプトは私が望むように機能します。 – nollaf126

関連する問題