4 votes

Applescript : Ouvrir l'onglet Safari actuel dans Chrome (Dépannage d'un script qui fonctionne)

Il y a quelque temps, j'ai décidé de lancer une installation sans Flash de Safari. C'est vraiment génial, Safari semble beaucoup plus stable dans l'ensemble et il me manque à peine.

Mais de temps en temps, je tombe sur un site qui nécessite du flash (principalement des vidéos YouTube, ce que je pensais ne pas être un problème étant donné que Google était censé tout passer au HTML5), donc pour ces cas-là, j'ai un Appescript qui s'exécute lorsqu'il est déclenché par un Workflow Alfred (avec un raccourci clavier). Le script est le suivant :

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

En général, cela fonctionne parfaitement, mais je rencontre un problème étrange lorsque Chrome n'a pas de fenêtre ouverte en arrière-plan. Dans ces cas, Chrome ouvrira une nouvelle fenêtre (vide), et le script s'arrêtera juste là. La troisième déclaration de Tell,

 tell application "Safari"

    close current tab of window 1

end tell

Ne s'exécutera jamais, me laissant avec une fenêtre chrome ouverte et une fenêtre safari ouverte également. Ce n'est qu'après avoir appuyé une seconde fois sur le raccourci clavier, alors que la fenêtre Chrome est déjà ouverte, que le script suit son cours et ouvre la page dans Chrome/ferme l'onglet dans Safari.

Des idées ? Je suis vraiment confus par le fait que la troisième instruction tell ne s'exécute pas du tout. Si la fenêtre Chrome s'ouvrait en blanc mais que l'onglet safari restait fermé, je devinerais qu'il s'agit d'une simple erreur dans l'instruction if/else, mais le fait que le script semble se terminer me laisse vraiment perplexe sur ce point.

2voto

adayzdone Points 1798

Ce n'est pas parce que Safari et Chrome fonctionnent qu'ils ont une fenêtre ouverte. Vous pouvez soit tester l'ouverture de fenêtres comme Mark l'indique, soit utiliser la commande reopen qui ouvre une nouvelle fenêtre si elle n'existe pas.

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

EDIT

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

0voto

markhunte Points 11634

Alfred vous protège peut-être d'une erreur qui se produit si Chrome est en cours d'exécution mais qu'aucune fenêtre n'est ouverte.

Google Chrome a reçu une erreur : Impossible de définir l'onglet actif sur "http.....".

Changez les lignes

  make new window
  set URL of active tab to theURL

à

set theWindow to make new window

set URL of active tab of theWindow to theURL

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X