Ошибка происходит, потому что окно с кнопкой все еще открыто. И хотя это так, документ не может быть изменен.
Чтобы заставить его работать, вы можете использовать кнопку, чтобы просто закрыть окно и затем сразу запустить основную функцию:
#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