Cómo escribir un cuadro emergente antes de cerrar un documento - InDesign

He usado javascript para escribir antes, usando an eventlistenerpara decir

app.addEventListener( "beforeClose" , [function]);
function [functionname]()

etc...

Lo que necesito es una forma de decirle a InDesign 'antes de cerrar el documento, muestre un cuadro de mensaje que diga "¿probó su página?".

Que luego se puede aprobar y continuará el proceso de cierre.

¿Alguien tiene una idea de cómo se podría hacer esto, o alguna alternativa que pueda producir el mismo efecto?

o incluso un método "beforePrint", si existe?

Respuestas (2)

Editar: aquí hay un script que solicita confirmación antes de cerrar un documento:

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

Y aquí está la publicación original sobre lo mismo para un beforePrintevento:

#target Indesign
#targetengine "printConfirmation"
app.addEventListener("beforePrint", confirmPrint);

function confirmPrint(e) {
  if (confirm ("Do you really want to print?") === false) {
    e.stopPropagation();
    e.preventDefault();
  }
}

Tenga en cuenta que el primero tiene una cláusula if adicional, porque al cerrar un documento, tanto the Documentcomo the LayoutWindowactivarán el evento. Entonces, si no cancelases uno de ellos, te lo pediría dos veces.

Puede moverlos a la carpeta de secuencias de comandos de inicio y luego registrarán automáticamente los eventos una vez que se inicie InDesign.

¡Eso es absolutamente perfecto! ¡Trabajado como un encanto!

¿Puedo sugerir que este script sea aún más seguro comprobando primero si el oyente ya se ha agregado o no antes de agregarlo?

#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();