我对#targetengine的唯一先前经验是,当我在InDesign中编写脚本时使用#targetengine "session";将对话框变成调色板时。但是,当我试图弄清楚如何编写菜单脚本时,我开始看到它以其他方式弹出,并使用了session以外的其他术语(目标?)。

Adobe喜欢假设每个想要编写脚本的人有时都是经验丰富的程序员,因此我没有找到关于这是什么的明确解释。

因此,当我使用#targetengine时,我在做什么?我可以使用"session"以外的任何术语吗?一些搜索表明此功能与全局变量有关。是这样吗?如果是这样,如何在不重新启动InDesign的情况下清除它们?这是JavaScript还是ExtendScript/InDesign功能?

最佳答案

#targetengine特定于InDesign,PhotoShop,Illustrator等中的Adobe脚本-它不是一般的Javascript功能。

它指定了如何处理所有全局“ Material ”-不仅包括变量,还包括函数声明以及对全局状态的任何其他更改。

如果使用默认的“主”引擎,则脚本完成后,所有全局变量都将消失。如果使用“ session ”引擎,则只要宿主应用程序保持运行,所有全局变量都将保留。这意味着如果您运行脚本:

#targetengine "session"

var test = "test";

然后运行脚本:
#targetengine "session"

alert(test);

您会看到一个显示test的消息框,而不是显示错误消息

除了两个标准的“主”和“ session ”引擎之外,您还可以使用任意名称创建自己的引擎-因此,如果您运行脚本
#targetengine "mine"

var test = "another test";

然后运行
#targetengine "mine"

alert(test);

您将看到一个显示another test的消息框,但是如果再次运行
#targetengine "session"

alert(test);

您仍然会得到test:有两个不同的“测试”全局变量,一个在“ session ”引擎中,一个在(新创建的)“我的”中。

关于javascript - 什么是#targetengine?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14061690/

10-09 18:13