通过为标准 InDesign 面板编写脚本提供了哪些方法和属性?

What methods and properties are provided for use through scripting for standard InDesign panels?

例如,我可以获得对“脚本”面板的引用;但是,尽管其构造函数的名称是 'Panel',但它似乎没有 showhide 方法,例如通过脚本创建的面板,或 window 属性, 等等:

var scriptsPanel = app.panels.item('$ID/Scripts')    
scriptsPanel.window // → “Object does not support the property or method 'window'”
scriptsPanel.show(); // → “scriptsPanel.show is not a function”

它确实有一些脚本创建的面板的属性,但是:

scriptsPanel.visible // → true or false

什么是标准面板的方法和属性,它们记录在何处?

有几个地方记录了 DOM 对象,Adobe 的官方方法是使用 ExtendScript Toolkit 浏览对象及其方法和属性(在 ExtendScript Toolkit 中转到帮助 > 对象模型查看器)。

话虽如此,大多数 ExtendScript 用户似乎觉得此浏览器使用起来很麻烦,因此网上有一些页面记录了 InDesign 对象模型。

我个人使用并更喜欢 InDesign ExtendScript API by Gregor Fellenz, but another popular one is Jongware's Adobe InDesign CS6 (8.0) Object Model JS 查看器(对于较新版本的 InDesign,该查看器似乎不再更新)。我更喜欢 Gregor Fellenz 的页面,因为它有搜索功能,而且我发现它更容易导航。

您可以在 InDesign 中找到面板的属性和方法 here. Note that there is also the panel object of the ScriptUI, which is documented here。 ScriptUI 是 Adob​​e 用于创建用户界面的脚本语言。所以这两个面板对象具有不同的方法和属性,这就是其中一个没有 show() 方法的原因。

正如您所注意到的,这导致了一个有点令人困惑的事实,即有两种不同类型的对象具有相同的构造函数名称 Panel。但是,它们的使用并没有真正的歧义,因为 InDesign 的 UI 原生面板始终是 app 对象的子项,而您通过脚本在脚本中创建的面板UI 总是其他 ScriptUI 对象的子对象。其他 DOM/ScriptUI 名称对也是如此,例如 window.

请注意,InDesign 中有一个 panel 对象意味着还有一个 panels 集合对象,它具有用于面板集合的属性和方法。此 panels 对象记录在案 here.