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.