我对#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/