如何加载另一个脚本文件并在其上运行方法?
我正在使用InDesign javascript,我不知道如何在同一个脚本中包含多个文件。
答案 0 :(得分:10)
三个选项:import,app.doScript和$ .evalFile。我更喜欢$ .evalFile。见app.doScript vs $.evalFile
<强> C:\ script1.jsx 强>
(function() {
$.evalFile(new File("/c/script2.jsx"));
var sFullName = g_script2.combineName("John", "Doe");
$.writeln(sFullName);
return "Success";
})();
<强> C:\ script2.jsx 强>
g_script2 = {
combineName: function(sFirstName, sLastName) {
return sFirstName + " " + sLastName;
}
};
如果script2.jsx不在C盘的根目录中,请修改脚本1及其真实位置。
sFullName
将是全球性的。g_script2
。combineName
方法。请务必注意,脚本的所有文件将共享相同的全局命名空间,这是脚本1可以访问g_script2
的方式。 。但是,这也意味着没有两个文件应该具有相同的函数或变量名称,除非它们保存在全局对象中,如本例所示。combineName
函数,并返回一个字符串。答案 1 :(得分:3)
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();