如何在indesign中要求或包含脚本?

时间:2013-03-06 10:02:45

标签: javascript include adobe require adobe-indesign

如何加载另一个脚本文件并在其上运行方法?

我正在使用InDesign javascript,我不知道如何在同一个脚本中包含多个文件。

2 个答案:

答案 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及其真实位置。

说明:

  1. 脚本1创建并执行匿名函数以避免污染全局命名空间。如果不这样做,sFullName将是全球性的。
  2. 脚本1执行脚本2。
  3. 脚本2创建一个对象并将其存储到全局变量g_script2
  4. 脚本1调用脚本2的combineName方法。请务必注意,脚本的所有文件将共享相同的全局命名空间,这是脚本1可以访问g_script2的方式。 。但是,这也意味着没有两个文件应该具有相同的函数或变量名称,除非它们保存在全局对象中,如本例所示。
  5. 运行combineName函数,并返回一个字符串。
  6. 脚本1打印名称,然后返回“成功”。因为那是堆栈中的最后一个对象,所以它将作为脚本结果返回。

答案 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();