2014-11-14 1 views
4

У меня есть вопрос относительно сценария Indesign.Почему закрытие окна в Indesign не работает?

Почему это работает, когда вы закрываете окно, как:

submitButton.onClick = function(){ 
    close(); 
} 

Но когда я пытаюсь выполнить функцию впоследствии как:

submitButton.onClick = function(){ 
    close(); 
    tagElements(); 
} 

(обратите внимание, я использую «с» тег, поэтому не требуется window.close())

Окно не закрывается? Я что-то забыл? Не следует закрыть окно, а затем выполнить функцию?

окно инициализируется как:

var de = new Window('dialog', 'Descriptions'); 
+0

Должно работать. Не могли бы вы также включить код для функции 'tagElements();'? Работает ли функция 'tagElements();', если вы только выполняете эту функцию при нажатии кнопки? – user25312

+1

Это не так, потому что функции не могут быть выполнены, пока диалог открыт в indesign. Поэтому диалог должен быть закрыт первым. –

+0

Проблема не кажется легко реплицируемой, частично из-за разбросанных фрагментов кода. Например, в показанном коде нет 'с' (вы * говорите * вы его используете, но, возможно, вы используете его неправильно!). Можете ли вы добавить один единственный [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve), который все еще имеет проблему? – usr2564301

ответ

0

Следующая сделал трюк:

with(de) 
    submitButton.onClick = function(){ 
     close(1); 
    } 
} 
if(de.show){ 
    tagElements(); 
} 

de.show будет истинным, когда вы передаете '1' в непосредственной функции (1 == верно) , На кнопке закрытия вы просто добавите 'close()', и оператор if будет false.

1

Замена close() с de.close() следует сделать трюк. Это работает для меня;

var de = new Window('dialog', 'Descriptions'); 
btn = de.add('button', undefined, 'close'); 
btn.onClick = function() { 
    de.close(); 
    alert('foo'); 
} 
de.show(); 
+0

Как вы можете прочитать в моем сообщении, я использую тег «with». Не требуется ссылка «de» –

+0

@Frederik: после перемещения всего внутри 'with (de)' и удаления 'de'' внутри, это все еще работает. Разве это не для вас? – usr2564301

+0

№ Определите «рабочий», пожалуйста. Когда появляется предупреждение, отображается ли диалоговое окно? Потому что это проблема здесь –

0

Вы, возможно, придется добавить задержку после закрытия (не пробовал):

function pause(msec) { 
    var done = null; 
    var date = new Date(); 
    var curDate = null; 
    do curDate = new Date(); 
    while(curDate-date < msec); 
    var done = 1; 
    return done; 
} 

submitButton.onClick = function(){ 
    close(); 
    pause(500); 
    tagElements(); 
} 
0

Вам нужна ссылка на открытое окно в коде.

submitButton.onClick = function(){ 
de.close(); 
tagElements(); 
} 

должен работать

+0

Как вы можете прочитать в моем сообщении, я использую тег «with». Нет необходимости в «de» –

+0

Вы можете реализовать свой код в JSfiddle? – Dhanilan