Applescript: Apri la scheda Safari corrente in Chrome (Risoluzione dei problemi relativi allo script di lavoro)

4

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.

    
posta Carlos 09.02.2014 - 15:17
fonte

2 risposte

2

Solo perché Safari e Chrome sono in esecuzione, non significa che abbiano una finestra aperta. Puoi testare le finestre aperte come indicato da Mark o semplicemente emettere il comando di riapertura che apre una nuova finestra se non ne esiste 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

Modifica

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
    
risposta data 09.02.2014 - 16:12
fonte
0

Alfred potrebbe proteggerti da un errore che si verifica se Chrome è in esecuzione ma non ha finestre aperte.

Google Chrome got an error: Can’t set active tab to "http.....".

Cambia le linee

  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
    
risposta data 09.02.2014 - 16:02
fonte

Leggi altre domande sui tag