La connection es un error no válido al ejecutar Applescript y Safari

El siguiente manuscrito espera que se cargue una página antes de continuar con la parte de la secuencia de commands do javascript "document.body.innerText" . Parece funcionar muy bien, excepto por una cosa. Si Safari se está ejecutando pero no hay ninguna window abierta actualmente, ejecutar este script da como resultado

error "Safari recibió un error: la connection no es válida". número -609

Sin embargo, si ejecuto esto cuando Safari está cerrado, inicia Safari, va a la URL especificada y una vez que la página se carga, ejecuta la parte javascript. No entiendo por qué se produce un error si Safari se está ejecutando sin windows abiertas.

 tell application "Safari" activate if not (exists document 1) then reopen tell front document set URL to "http://example.com" repeat until length of (source as text) is not 0 delay 0.5 end repeat do javascript "document.body.innerText" end tell end tell 

El error siempre resalta la source as text parte del source as text del script. Intenté cambiar la length of (source as text) is not 0 para repeat until name is "example domain" pero el error aún ocurre si no hay windows abiertas y Safari se está ejecutando.

  • ¿Cómo boost el tamaño del cursor programáticamente?
  • Lectura programática de ambos títulos de Terminal.app por pestaña
  • Insertar script de shell en el package .app
  • En OSX, ¿cuál es el command opuesto para "decir", es decir, qué command hay para el reconocimiento de voz?
  • Obligar a un script a ejecutarse en inglés
  • Haga doble clic en AppleScript
  • Establecer variables de entorno para scripts ejecutados por launchd?
  • Ejecute el script como root cada vez que un usuario inicie session
  • One Solution collect form web for “La connection es un error no válido al ejecutar Applescript y Safari”

    Necesita intercambiar la position de la línea de código activate con if not (exists document 1) then reopen línea de código .

    Ejemplo:

     tell application "Safari" if not (exists document 1) then reopen activate tell front document set URL to "http://example.com" repeat until length of (source as text) is not 0 delay 0.5 end repeat do javascript "document.body.innerText" end tell end tell 

    La captura de pantalla del Editor de scripts, a continuación, se ejecutó con Safari abierto y sin windows abiertas.

    Ventana Script Editor

    Primero tuve que marcar "[√] Mostrar el menu de Desarrollo en la barra de menu" (Safari> Preferences …> Avanzado) y luego en el menu Desarrollar, hacer clic en "Permitir JavaScript desde Apple Events". Luego copié y pegué su código AppleScript en el Editor de secuencias de commands, hice clic en el button Ejecutar el script y se ejecutó sin error y devolvió el text de la página web http://example.com . Sin embargo, Safari estaba cerrado cuando ejecuté el script la primera vez.

    Después de volver a leer su pregunta, pude reproducir el error al abrir Safari sin abrir ninguna window. Luego miré más detenidamente su código y noté que había sido activate antes ( if not (exists document 1) then reopen y if not (exists document 1) then reopen debe activate para evitar el error.

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