Раньше я использовал javascript для сценария, используя, eventlistener
чтобы сказать
app.addEventListener( "beforeClose" , [function]);
function [functionname]()
и т.д...
Что мне нужно, так это способ сказать InDesign: «перед закрытием документа показать окно сообщения, в котором говорится: «Вы проверили свою страницу?».
Который затем может быть одобрен и продолжит процесс закрытия.
Есть ли у кого-нибудь идеи, как это можно сделать, или какие-либо альтернативы, которые могут дать такой же эффект?
Изменить: вот скрипт, который запрашивает подтверждение перед закрытием документа:
#target Indesign
#targetengine "closeConfirmation"
app.addEventListener("beforeClose", confirmClose);
function confirmClose(e) {
if(e.parent.constructor.name !== "LayoutWindow") return;
if (confirm ("Did you proof your page?") === false) {
e.stopPropagation();
e.preventDefault();
}
}
А вот и оригинальный пост о том же для beforePrint
события:
#target Indesign
#targetengine "printConfirmation"
app.addEventListener("beforePrint", confirmPrint);
function confirmPrint(e) {
if (confirm ("Do you really want to print?") === false) {
e.stopPropagation();
e.preventDefault();
}
}
Обратите внимание, что у первого есть дополнительное предложение if, потому что при закрытии документа и the , Document
и the LayoutWindow
вызовут событие. Так что, если бы вы не отменили один из них, он бы попросил вас дважды.
Вы можете переместить их в папку сценариев запуска, после чего они автоматически регистрируют события после запуска InDesign.
Могу ли я предложить сделать этот сценарий еще более безопасным, сначала проверив, был ли уже добавлен слушатель или нет, прежде чем добавлять его?
#target Indesign
#targetengine "printConfirmation"
function main() {
var ev = app.eventListeners.itemByName ("onBeforePrintHandler" );
if ( ev.isValid ) return;
app.addEventListener("beforePrint", confirmPrint).name = "onBeforePrintHandler";
}
}
function confirmPrint(e) {
if (confirm ("Do you really want to print?") === false) {
e.stopPropagation();
e.preventDefault();
}
}
main();
Бенджамин Лейк