admin管理员组文章数量:1189027
My only prior experience with #targetengine
is when I've used #targetengine "session";
to turn a dialog into a palette when scripting in InDesign. But as I'm trying to figure out how to script a menu, I'm starting to see it pop up being used in other ways and using a term (target?) other than session
.
Adobe likes to assume that everyone who wants to script is an experienced programmer sometimes, so I haven't found a clear explanation as to what this is.
So, when I use #targetengine
, what am I doing? Can I use any term other than "session"
? Some searches suggested this feature has to do with global variables; is that the case? If so, how can I clear them out without restarting InDesign? Is this a JavaScript thing or an ExtendScript/InDesign feature?
My only prior experience with #targetengine
is when I've used #targetengine "session";
to turn a dialog into a palette when scripting in InDesign. But as I'm trying to figure out how to script a menu, I'm starting to see it pop up being used in other ways and using a term (target?) other than session
.
Adobe likes to assume that everyone who wants to script is an experienced programmer sometimes, so I haven't found a clear explanation as to what this is.
So, when I use #targetengine
, what am I doing? Can I use any term other than "session"
? Some searches suggested this feature has to do with global variables; is that the case? If so, how can I clear them out without restarting InDesign? Is this a JavaScript thing or an ExtendScript/InDesign feature?
2 Answers
Reset to default 31#targetengine
is specific to the Adobe scripting in InDesign, PhotoShop, Illustrator etc. - it is not a general Javascript feature.
It specifies how to handle all the global 'stuff' - not only variables but also function declarations and any other change to the global status.
If you use the default 'main' engine all the globals disappear as soon as the script completes. If you use the 'session' engine all the globals are preserved as long as the host application keeps running. This means that if you run the script:
#targetengine "session"
var test = "test";
and later run the script:
#targetengine "session"
alert(test);
you get a message box showing test
instead than giving an error
Besides the two standard 'main' and 'session' engines you can create your own ones, with arbitrary names - so if you run the script
#targetengine "mine"
var test = "another test";
and then run
#targetengine "mine"
alert(test);
you get a message box showing another test
, but if you run again
#targetengine "session"
alert(test);
you still get test
: there are two different 'test' global variables, one in the 'session' engine and one in the (newly created) 'mine' one.
This discussion was brought up in a Slack channel I monitor. One long-time developer said the following (cleaned up a bit for clarity):
As far as I know
//@targetengine
only works on InDesign (probably including InCopy) and Illustrator.On InDesign it works properly and on Illustrator it does not. Nevertheless other apps as far as I know all have the ability to use targetengines with C++ and that’s what CEP does with each CEP [extension?] having its own isolated engine.
There are at least 3 types of engine.
main
engines, in InDesign it’s a temp engine that forgets everything after completing a scripts execution.
Public Private
engines likesession
that remember and are active after script execution and good for event listeners. These andmain
can be identified using$.engineName
and found on ESTK / vsCode
Private Private
$.engineName
will show""
can only be created with C++ that what most of the apps use and CEP uses except for InDesign where CEP usesPublic Private
engines which can be chosen.
He thinks there's also a 4th type he's forgetten.
本文标签: javascriptWhat is targetengineStack Overflow
版权声明:本文标题:javascript - What is #targetengine? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1738350952a2078962.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
#targetengine
? – Brendan Commented Dec 27, 2012 at 21:53