-1

我尝试通过 indesign 运行我的 javascript 代码,但出现错误:MODAL DIALOG OR ALERT IS ACTIVE。

谁知道如何解决这个问题?

 #target "InDesign"

 w = new Window ('dialog'); 

 magicButton = w.add ("button", undefined, "Buttton");
 magicButton.onClick = main

 w.show ();

 function main(){

 var myDocument = app.activeDocument
 myDocument.viewPreferences.horizontalMeasurementUnits = 
 MeasurementUnits.PIXELS;
 myDocument.viewPreferences.verticalMeasurementUnits = 
 MeasurementUnits.PIXELS;
 }
4

1 回答 1

1

发生错误,因为带有按钮的窗口仍处于打开状态。在这种情况下,无法更改文档。

要使其正常工作,您可以使用按钮关闭窗口,然后让 main 函数立即运行:

#target "InDesign"

w = new Window('dialog');

magicButton = w.add ("button", undefined, "Buttton");
magicButton.onClick = function() {
  w.close();
}

w.show();

main();

function main(){

  // ... do stuff with the document etc.

}

请注意,通常您会在窗口中同时添加一个OKCancel按钮,然后根据用户按下的按钮,您将执行或不执行您的函数。

如果您需要让窗口保持打开状态(尽管在您给出的示例中我看不出这有什么意义),您需要创建一个类型的窗口palette而不是dialog. 在这种情况下,您还必须创建一个目标引擎,否则该窗口将不会显示:

#targetengine session

w = new Window('palette');

// ... and so on
于 2020-02-03T14:47:56.560 回答