我正在使用InDesign CC 2017和Mac OS X El Capitan,并希望在我的Startup Scripts文件夹中使用脚本,以便每次在该文件的filePath中打开某个字符串的文件时始终执行检查。如果在filePath中找到该字符串,我只想向用户显示一条消息。
选择要打开的文件后,我会在加载文件之前收到警告。 “附加脚本生成以下错误:没有文档打开。是否要禁用此事件处理程序?”
我想一个名为“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!");
}
}
提前感谢您的帮助。 :)
答案 0 :(得分:2)
当事件在对象层次结构中冒泡时,您需要确保事件父对象实际上是文档:
#targetengine "onAfterOpen"
main();
function main() {
var ev = app.eventListeners.itemByName ( "onAfterOpen" );
!ev.isValid && app.eventListeners.add("afterOpen",myfunc).name = "onAfterOpen";
}
function myfunc (myEvent) {
var doc = myEvent.parent, sPath;
if ( !( doc instanceof Document ) ) return;
sPath = decodeURI(doc.properties.filePath);
if ( !sPath ) return;
alert( /string in path/.test ( sPath )?
"This file is the one mother warned you about."
:
"This file is good to go!"
);
}