Indesign javascript ОШИБКА: МОДАЛЬНЫЙ ДИАЛОГ ИЛИ ПРЕДУПРЕЖДЕНИЕ АКТИВНО - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь запустить свой код javascript с помощью indesign, но возникает ошибка: МОДАЛЬНЫЙ ДИАЛОГ ИЛИ АЛЬТЕР АКТИВ.

Кто знает, как решить эту проблему?

 #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;
 }

1 Ответ

1 голос
/ 03 февраля 2020

Ошибка происходит, потому что окно с кнопкой все еще открыто. И хотя это так, документ не может быть изменен.

Чтобы заставить его работать, вы можете использовать кнопку, чтобы просто закрыть окно и затем сразу запустить основную функцию:

#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.

}

Обратите внимание, что, как правило, вы добавляете в окно кнопку OK и Cancel, а затем, в зависимости от того, на какую кнопку нажимает пользователь, вы выполняете свою функцию или нет.

Если вам нужно чтобы окно оставалось открытым (хотя я не понимаю, как это могло бы иметь смысл в приведенном вами примере), вам необходимо создать окно типа palette вместо dialog. В этом случае вам также нужно будет создать целевой движок, иначе окно не будет отображаться:

#targetengine session

w = new Window('palette');

// ... and so on
...