Entonces, hace un tiempo decidí ejecutar una instalación de Safari sin Flash. Ha sido realmente genial, Safari parece mucho más estable en general y apenas lo extraño.
Pero de vez en cuando me tropiezo con un sitio que requiere flash (principalmente videos de YouTube, que pensé que no serían un problema dado que se suponía que Google cambiaría todo a HTML5), así que para esos casos tengo un Appescript que se ejecuta cuando se activa a través de un Alfred Workflow (con una tecla de acceso rápido). El guión es como tal:
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
Por lo general, esto funciona perfectamente, pero me encuentro con un problema extraño cada vez que Chrome no tiene una ventana abierta en segundo plano. En estos casos, Chrome abrirá una nueva ventana (en blanco) y la secuencia de comandos se detendrá allí. La tercera declaración de Tell,
tell application "Safari"
close current tab of window 1
end tell
Nunca se ejecutará, dejándome con una ventana cromada abierta y una ventana safari abierta también. Solo después de presionar la tecla de acceso rápido por segunda vez, después de que la ventana de Chrome ya esté abierta, el Script ejecutará su curso y abrirá la página en Chrome/cerrará la pestaña en Safari.
¿Algunas ideas? Estoy realmente confundido por el hecho de que la tercera instrucción Tell no se ejecutará en absoluto. Si la ventana de Chrome se abrió en blanco pero la pestaña de safari aún se cerró, supongo que fue un simple error en la declaración if/else, pero el hecho de que el script parece terminar realmente me deja perplejo en este caso.
El hecho de que Safari y Chrome se estén ejecutando no significa que tengan una ventana abierta. Puede probar las ventanas abiertas como señala Mark o simplemente emitir el comando de reapertura que abre una nueva ventana si no existe una.
tell application "Google Chrome"
if not (exists window 1) then reopen
-- insert your code
end tell
tell application "Safari"
if not (exists document 1) then reopen
-- insert your code
end tell
EDITAR
tell application "Safari"
if not (exists document 1) then return
set theURL to URL of current tab of window 1
close current tab of window 1
end tell
tell application "Google Chrome"
if not (exists window 1) then reopen
set URL of active tab of window 1 to theURL
end tell
Alfred puede estar protegiéndolo de un error que ocurre si Chrome se está ejecutando pero no tiene ninguna ventana abierta.
Google Chrome recibió un error: No se puede configurar la pestaña activa en "http...".
cambiar las lineas
make new window
set URL of active tab to theURL
a
set theWindow to make new window
set URL of active tab of theWindow to theURL
sergei
Develop
->Open Page With
->Google Chrome
. Puede asignar una tecla de acceso rápido para esta acción en las preferencias del sistemacarlos