В ExtendScript я столкнулся с очень странным сценарием, в котором мне нужна помощь гуру ScriptUI. У меня есть огромный скрипт InDesign, который во время выполнения отображает индикатор выполнения в окне палитры. (var w = new Window("palette", "Progress");
) Я хотел бы, чтобы эта палитра была закрыта, когда скрипт будет завершен, поэтому я добавил w.close()
в конце скрипта.
Однако это происходит только в том случае, если фокус все еще находится в InDesign. Некоторым из наших сотрудников нравится работать над другими задачами, пока скрипт InDesign работает на другом экране в фоновом режиме, и это нормально, но когда они возвращаются в InDesign, эта палитра индикатора выполнения все еще отображается на экране, показывая 100% завершение. Это окно палитры можно перемещать, но его нельзя закрыть, даже если щелкнуть маленький красный крестик в углу. В конечном итоге это приводит к тому, что несколько палитр остаются на экране в течение дня, так как этот сценарий вызывается десятки раз в течение обычного рабочего дня.
Читая прекрасное руководство Питера Карела по ScriptUI, я узнал, что все палитры остаются в памяти даже после закрытия с помощью .close()
. Я хочу, чтобы они были полностью стерты из памяти и очищены, чтобы они не оставались на экране, если пользователь переключится на другое приложение во время работы скрипта. Любые идеи о том, как это сделать?
Между прочим, я хотел включить некоторый пример кода, чтобы вы могли убедиться сами, но, похоже, он не работает, когда это всего лишь небольшой код, вызываемый с помощью ESTK; только в моем производственном сценарии из 4647 строк. Таким образом, я не могу вставить какой-либо пример кода.
$.gc ()
› Инициирует сборку мусора в движке JavaScript. ссылка Страница 219 - person fabianmoronzirfas   schedule 06.02.2014