其中是外部文件事件处理程序的事件对象



在Adobe InDesign CS6脚本指南:JavaScript(链接到pdf),第8章:第136页的事件中,

eventListeners,使用脚本中定义的处理程序函数(而不是在外部文件中)必须使用#targetengine "session"。如果脚本使用#targetengine "main"(默认)运行,则函数在事件发生时不可用,并且脚本生成错误。

错误如下:

请求的操作无法完成,因为对象没有不再存在了。

使用#targetengine不是我的脚本的选项,所以我坚持使用外部文件引用的事件处理程序。

我的问题是:我如何访问外部文件事件处理程序中的事件对象?我试过app.scriptArgs.get("event")和检查typeof event无济于事。如果不知道事件的目标,我的事件处理程序是无用的。

该事件可通过evt变量在本地范围内使用。

作为示例,将以下两个文件放在同一个文件夹中:

activateEventHandler.jsx

var parentFolder = (new File($.fileName)).parent;
var eventHandlerFile = new File(parentFolder.fsName + "/onEvent.jsx");
var eventListener = app.addEventListener("afterNew", eventHandlerFile);
app.documents.add();
eventListener.remove();

onEvent.jsx

alert("Event '" + evt.eventType + "' with target " + evt.target.constructor.name);

当你运行activateeventandler。在Jsx中,您应该看到一个带有文本

的警告。

事件'afterNew'与目标文档

最新更新