Quindi, ho deciso qualche tempo fa di eseguire un'installazione di Safari senza Flash. E 'stato davvero grandioso, Safari sembra molto più stabile nel complesso e mi manca a malapena.
Ma ogni tanto mi imbatto in un sito che richiede flash (principalmente video di YouTube, che pensavo non sarebbero stati un problema dato che Google avrebbe dovuto passare tutto in HTML5), quindi per quei casi io avere un Appescript che viene eseguito quando viene attivato tramite un flusso di lavoro Alfred (con un tasto di scelta rapida). Lo script è così:
tell application "Safari"
set theURL to URL of current tab of window 1
end tell
tell application "Google Chrome"
if windows ≠ {} then
make new tab at the end of window 1 with properties {URL:theURL}
else
make new window
set URL of active tab to theURL
end if
activate
end tell
tell application "Safari"
close current tab of window 1
end tell
Questo di solito funziona perfettamente, ma mi imbatto in un problema strano ogni volta che Chrome non ha una finestra aperta sullo sfondo. In questi casi, Chrome aprirà una nuova finestra (vuota) e lo script si fermerà proprio lì. La terza dichiarazione di Tell,
tell application "Safari"
close current tab of window 1
end tell
Non funzionerà mai, lasciandomi con una finestra aperta di cromo e una finestra di safari aperta. È solo dopo aver premuto il tasto di scelta rapida una seconda volta, dopo che la finestra di Chrome è già aperta, che lo script eseguirà il suo corso e aprirà la pagina in chrome / chiudendo la scheda in Safari.
Qualche idea? Sono davvero confuso dal fatto che la terza dichiarazione tell non verrà eseguita affatto. Se la finestra di Chrome si è aperta in bianco, ma la scheda Safari è ancora chiusa, suppongo che si sia trattato di un semplice errore nella dichiarazione if / else, ma il fatto che la sceneggiatura sembra terminare mi ha davvero bloccato su questo.