¿Por qué AppleScript en El Capitán funciona de manera diferente?

¿Por qué en El Capitán esta aplicación dice 3 1 2? Antes de El Capitán dijo 1 2 3.

Cuando se hace doble clic en este script, necesita decir 1 2 3.

  • Cómo hacer AppleScript mantenga pulsada una tecla durante 2 segundos
  • ¿Cómo puedo automatizar el pegado de la contraseña en SecurityAgent?
  • ¿Es posible enviar aplicaciones no segmentadas en el App Store de Mac?
  • ¿Cuál es la forma moderna de hacer reenvío de puertos en El Capitán? (puerto de avance 80 a 8080)
  • Notes.app se cuelga continuamente en El Capitan
  • Problema al intentar convertir el número de mes a forma de palabra en AppleScript (pero solo cuando ese mes contiene 31 días)
  • on run say "1" testing() end run on testing() say "2" end testing on idle say "3" return 60 end idle on quit end quit 

  • Pasar la ruta de la carpeta seleccionada al service personalizado que ejecuta AppleScript
  • Error de AppleScript: al colocar text sin formatting en el portapapeles, el text siempre se convierte en text enriquecido
  • Ejecute un AppleScript que requiera pulsaciones de teclas mientras la pantalla está bloqueada.
  • Cambio de sonido de notificación en Yosemite / El Capitan
  • Lanzamiento de Character Viewer (también conocido como CharacterPalette) desde la línea de command
  • Eliminar el nombre de la carpeta del nombre del file en function de Apple Script existente
  • 2 Solutions collect form web for “¿Por qué AppleScript en El Capitán funciona de manera diferente?”

    El controller idle y de quit son para Applets , no Scripts. Los applets y los scripts son diferentes, sin embargo, ambos están escritos en Applescript.

    Un applet es una aplicación de script que admite manipuladores idle y de quit , mientras que el script es como cualquier otro script en cualquier idioma; se ejecuta y hasta el final, no sabe cuándo está por salir, o cuando está inactivo. Applet como cualquier otra aplicación, si hace clic derecho y "Abrir contenido del package" de un applet verá el parecido. Applet puede tener resources, puede tener CodeSigned, puede tener múltiples secuencias de commands y compartirse sin ningún problema.

    Ese es su problema, elija save el script como una aplicación cuando se le solicite, también select "Permanecer abierto después del controller de ejecución" , y luego se ejecutará su controller idle .

    Pocas cosas más, siempre es una buena idea volver a salir de cada controller, que no está run y testing , esto puede hacer que el controller idle no se ejecute, ya que estará esperando a que la run termine. También debe insert continue quit en su controller de quit , de lo contrario, nunca se cerrará; Tendrás que obligarlo a abandonarlo.

    Para más información Guía de idiomas AppleScript

    Primero: no puedo reproducir su problema en OS X El Capitan 10.11 (15A284). Tu script dice "1", "2", "3" cada vez que lo ejecuto.

    Es posible que nunca se haya garantizado el order exacto de los posts "ejecutar" y "inactivo", por lo que es posible que ambos pedidos ({1, 2, 3} y {3, 1, 2}) se consideren correctos.

    Sin embargo, si el order de los posts de ejecución y inactivos es importante para su secuencia de commands, puede usar una propiedad de secuencia de commands para que el manejador inactivo sepa cuándo el manejador de ejecución ya se ha ejecutado y no hacer nada hasta que lo haya hecho, por ejemplo,

     property didRun : false on run say "1" testing() set didRun to true end run on testing() say "2" end testing on idle if not didRun then say "has not run" return 1 end if say "3" return 3 end idle on quit set didRun to false say "quit" continue quit end quit 

    Tenga en count que es necesario restablecer didRun en el controller de quit porque los valores de propiedad normalmente persisten en todas las ejecuciones (al volver a escribirse en el file de script después de la ejecución).

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).