Javascript 如何在indesign中要求或包含脚本?
如何加载另一个脚本文件并在其上运行方法Javascript 如何在indesign中要求或包含脚本?,javascript,include,adobe,require,adobe-indesign,Javascript,Include,Adobe,Require,Adobe Indesign,如何加载另一个脚本文件并在其上运行方法 我正在使用InDesign javascript,不知道如何在同一脚本中包含多个文件。三个选项:导入、app.doScript和$.evalFile。我更喜欢.evalFile美元。看 工作示例: C:\script1.jsx (function() { $.evalFile(new File("/c/script2.jsx")); var sFullName = g_script2.combineName("John", "Doe");
我正在使用InDesign javascript,不知道如何在同一脚本中包含多个文件。三个选项:导入、app.doScript和$.evalFile。我更喜欢.evalFile美元。看 工作示例: C:\script1.jsx
(function() {
$.evalFile(new File("/c/script2.jsx"));
var sFullName = g_script2.combineName("John", "Doe");
$.writeln(sFullName);
return "Success";
})();
g_script2 = {
combineName: function(sFirstName, sLastName) {
return sFirstName + " " + sLastName;
}
};
C:\script2.jsx
(function() {
$.evalFile(new File("/c/script2.jsx"));
var sFullName = g_script2.combineName("John", "Doe");
$.writeln(sFullName);
return "Success";
})();
g_script2 = {
combineName: function(sFirstName, sLastName) {
return sFirstName + " " + sLastName;
}
};
如果script2.jsx不在C驱动器的根目录中,请使用其真实位置修改Script1
说明:
sFullName
将是全局的g_script2
combineName
方法。这里需要注意的是,脚本的所有文件都将共享相同的全局名称空间,这就是脚本1可以访问g_script2
的方式。但是,这也意味着,对于函数或变量,任何两个文件都不应具有相同的名称,除非它们保存在全局对象中,如本例所示combineName
函数,并返回字符串ExtendScript提供了包含外部脚本的预处理器指令。 此指令将目标文件的内容插入语句位置的当前脚本文件中。因此,在语句之后,您可以调用任何方法,就像调用当前脚本的方法一样:
#target InDesign;
// Include other script file that includes a function otherScriptFileMethod
#include "otherScriptFile.jsx"
// Now you can call the method as it was written in this script file
otherScriptFileMethod();
谢谢,在windows中,以下两种功能都可以使用:“c:/script2.jsx”而不是“/c/script2.jsx”。但是相对路径呢?与当前脚本相关。在windows中,最好使用
c:/script2.jsx
而不是/c/script2.jsx
。如果根驱动器上有名为c
的文件夹,即c:\c
,则后者将失败。如果script2.jsx
与script1.jsx
位于同一文件夹中,则可以使用命令$.evalFile(新文件($.fileName)).parent.fullName+“\script2.jsx”)
运行它。或者,ExtendScript确实支持相对文件路径,但我不建议使用它们,因为它们与正在运行的脚本无关。哇!这很有魅力。要获取脚本自己的文件夹,可以执行以下操作:var root=(新文件($.fileName)).parent+“/”代码>-它返回的路径如下所示:/c/some%20folder/path
-顺便说一句,注意后面没有斜杠。使用$.writeln(sFullName)代码>调用我计算机上的ESTK。没有这条线,一切都很顺利。