web-dev-qa-db-fra.com

Ouvrir l'URL dans le nouvel onglet Safari avec AppleScript

Est-il possible d'utiliser AppleScript pour ouvrir un lien dans un nouvel onglet de Safari?

29
Mark Szymanski

Cela fonctionnera:

tell application "Safari"
    tell window 1
        set current tab to (make new tab with properties {URL:"http://www.stackoverflow.com"})
    end tell
end tell
36
Tim Lewis

Je pense que cela fait aussi ce que vous avez demandé, mais c'est beaucoup plus court et moins spécifique à votre navigateur:

do Shell script "open http://www.webpagehere.com"

Cela ouvrira l'URL spécifiée dans votre navigateur par défaut. Et si vous voulez explicitement l’ouvrir dans Safari, utilisez ceci:

do Shell script "open -a Safari 'http://www.webpagehere.com'"
22
rien333

Cela devrait généralement créer un nouvel onglet et le focaliser (ou focaliser un onglet existant si l'URL est déjà ouverte):

tell application "Safari"
    open location "http://stackoverflow.com"
    activate
end tell

Il ouvre une nouvelle fenêtre si "Ouvrir les pages dans des onglets au lieu de fenêtres" est défini sur Jamais.

tell application "System Events" to open location ne fonctionne pas avec certaines URL contenant des caractères non-ASCII:

set u to "http://ja.wikipedia.org/wiki/漢字"
tell application "System Events" to open location u
--tell application "Safari" to open location u
--do Shell script "open " & quoted form of u

Cela ouvre un nouvel onglet même lorsque de nouvelles pages sont définies pour s'ouvrir dans Windows:

tell application "Safari"
    activate
    reopen
    tell (window 1 where (its document is not missing value))
        if name of its document is not "Untitled" then set current tab to (make new tab)
        set index to 1
    end tell
    set URL of document 1 to "http://stackoverflow.com"
end tell
tell application "System Events" to tell process "Safari"
    perform action "AXRaise" of window 1
end tell

set index to 1 ne lève pas la fenêtre, mais la fait apparaître comme window 1 dans System Events, qui peut AXRaise.

7
Lri

Code:

tell application "System Events"
tell application "Safari" to activate
tell process "Safari"
click menu item "New Tab" of menu "File" of menu bar 1
end tell
end tell

tell application "Safari"
set URL of document 1 to "http://www.stackoverflow.com/"
end tell

Un problème est que cela ne fonctionne que si la langue du système est l'anglais.

3
user142019

J'utilise le script suivant pour ouvrir des centaines de documents dans des onglets d'une seule fenêtre.

tell application "Safari"
    tell window 1
        make new tab with properties {URL:"http://foo.com/bar"}
        make new tab with properties {URL:"http://foo.com/baz"}
    end tell
end tell

Mais cela ne fonctionne plus dans Safari 5.1 sur Lion. Cela ouvrirait le nouvel onglet, mais cela ne chargerait pas l'URL fournie dans les propriétés glob. Je l'ai modifié comme suit, qui fonctionne maintenant:

tell application "Safari"
    tell window 1
        set URL of (make new tab) to "http://foo.com/bar"
        set make new tab to "http://foo.com/baz"
    end tell
end tell
3
Pascal

Cela fait un moment qu'une nouvelle réponse a été postée ici. Je pense que c'est la manière optimale de le faire. Safari s'ouvrira s'il n'est pas ouvert, crée une nouvelle fenêtre si aucune fenêtre n'est ouverte et ajoute l'onglet à la fenêtre actuelle (ou nouvellement créée).

tell application "Safari"
    activate
    try
        tell window 1 to set current tab to make new tab with properties {URL:theURL}
    on error
        open location theURL
    end try
end tell
2
BallpointBen

J'ai fini par utiliser automator pour ce faire, ce qui était beaucoup plus facile et fonctionne. 

0
Laddy

Je ne peux pas commenter: -/je vais donc répondre en disant que la réponse de Tim (ci-dessus) fonctionne à partir de OS X 10.8.5. Cette version d'une ligne de son script fonctionne également:

tell window 1 of application "Safari" to set current tab to (make new tab with properties {URL:"http://www.stackoverflow.com"})

Arrgh - la ligne est en train de déborder. Ici, c'est sans les balises de code:

indiquez à la fenêtre 1 de l'application "Safari" de définir l'onglet actuel (créer un nouvel onglet avec propriétés {URL: " http://www.stackoverflow.com "})

0
Geoff Canyon

J'ai trouvé un moyen d'ouvrir un nouvel onglet en arrière-plan avec Safari.

tell application "Safari"

set the URL of (make new tab in window 1) to "your.url.net"

end tell

Pendant le temps où j'ai écrit cette réponse, j'ai fait ceci 

tell application "Safari"

try

    display dialog "Website URL" default answer "" buttons {"OK", "Annuler"} default button 1

    set theURL to text returned of result

    set netProto to "https://"

    if theURL contains netProto then

        set the URL of (make new tab in window 1) to theURL

    else

        set the URL of (make new tab in window 1) to netProto & theURL

    end if

end try

end tell

Nouvelle version

tell application "Safari"

repeat

    try

        display dialog "Website URL" default answer "" buttons {"OK", "Annuler"} default button 1

        set theURL to text returned of result

        if theURL is "" then exit repeat

        set netProto to "https://"

        if theURL contains netProto then

            set the URL of (make new tab in window 1) to theURL

        else

            set the URL of (make new tab in window 1) to netProto & theURL

        end if

        display dialog "Do you want to open a new tab?" buttons {"Yes", "No"} default button "Yes"

        if button returned of result is "No" then exit repeat

    end try

end repeat

end tell

Toutes les suggestions seront appréciées

Meilleures salutations

0
BK201 Freelance

Vous pouvez essayer l'approche suivante:

//make Safari window active and topmost
tell application "Safari" to activate
//start communication with Safari
tell application "Safari"
    tell window 1
        //create new tab and open specified URL
        tab with properties {URL:"https://url.com"})
        //make tab active
        set visible to true
    end tell
end tell

Vous pouvez également combiner l'utilisation du script Apple dans FastScript (gratuit pour 10 raccourcis)

Pour ajouter votre script, enregistrez simplement le script dans /Library/Scripts. Une fois que vous pourrez définir un raccourci pour le nouveau script.

Si vous voulez ouvrir une nouvelle fenêtre que nouvel onglet, vous pouvez jouer dans le prochain:

tell application "System Events"
    tell process "Safari"
        click menu item "New window" of menu "File" of menu bar 1
    end tell
end tell

Remarque: vous devez autoriser AppleScript à utiliser des capacités spéciales dans les paramètres de sécurité dans ce cas.

0
gbk

Travaillé pour moi dans Safari v.11

tell application "Safari"
    tell window 1
        make new tab with properties {URL:"https://Twitter.com"}
    end tell
end tell
0
Mudlabs

Ce n'est pas la solution la plus courte, mais ça marche aussi, et pas seulement en anglais ...

tell application "Safari"
    activate
end tell

tell application "System Events"
    set frontmost of process "Safari" to true
    keystroke "t" using {command down}
end tell

set myURL to "anyurl.html"
delay 2
tell application "Safari" to set the URL of the front document to myURL
0
Chris Eneman