2010-05-23 10 views

Répondre

31

Cela fonctionne:

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

ne fonctionne pas dans 5.1, [AppleScript - Script Safari 5.1 pour ouvrir un onglet - Stack Overflow] (http://stackoverflow.com/questions/6941630/script-safari-5-1-to-open-a-tab) – user495470

+0

@Lri: Ne fonctionne pas dans 6.0 soit; compte tenu du support AppleScript à moitié abandonné même dans les applications d'Apple, externaliser la tâche à une commande shell en utilisant l'utilitaire 'open' est l'approche la plus robuste: ' do shell script 'ouvert -a \ "Safari \" \ " "&" http://stackoverflow.com "&" \ "" ' – mklement0

+0

Cela fonctionne très bien dans Safari 9.1.2. Est-il possible d'ouvrir toujours une nouvelle fenêtre plutôt que d'ajouter l'onglet dans la fenêtre existante? –

3

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.

5

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

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

Il ouvre une nouvelle fenêtre si "Ouvrir les pages dans les onglets au lieu de Windows" est défini à jamais.

tell application "System Events" to open location ne fonctionne pas avec certaines URL qui contiennent 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 mis à ouvrir dans les fenêtres:

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 soulève pas la fenêtre, mais il fait apparaître la fenêtre comme window 1 aux événements système, qui peut AXRaise il.

+0

L'emplacement ouvert semble ouvrir les fenêtres ou les onglets en fonction du paramètre de préférence "Ouvrir les pages dans les onglets au lieu des fenêtres". La nouvelle version de l'onglet crée des onglets même si Safari est configuré pour toujours ouvrir Windows. – haa

+0

Parfait pour mon usage, puisque je ne veux pas qu'il crée un nouvel onglet si le précédent est toujours ouvert. Je vous remercie. –

+0

hi @Lri j'ai besoin d'aide .. votre code fonctionne pour moi seulement pour non-ascii, j'ai essayé pour ascii ... il ouvre dans un nouvel onglet, mais je le veux dans le même onglet .. pouvez-vous s'il vous plaît aider –

3

J'ai utilisé le script suivant pour ouvrir des centaines de documents dans des onglets dans 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 ne chargerait pas l'URL fournie dans les propriétés glob. Je l'ai modifié à ce qui 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 
19

Je pense que cela fait aussi ce que vous avez demandé, mais il est beaucoup plus courte et moins spécifique au 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'" 
0

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

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

Arrgh - la ligne une déborde. Ici, il est sans les balises de code:

fenêtre tell 1 d'application « Safari » pour définir l'onglet courant (faire un nouvel onglet avec des propriétés {URL: « http://www.stackoverflow.com »})

0

Je fini par utiliser Automator pour faire ce qui était beaucoup plus facile et cela fonctionne.

1

Cela fait un moment qu'une nouvelle réponse a été postée ici. Je pense que c'est la façon optimale de le faire. Il ouvrira Safari s'il n'est pas ouvert, créera une nouvelle fenêtre s'il n'y a pas de fenêtre ouverte, et ajoutera l'onglet à la fenêtre courante (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 
0

Vous pouvez essayer l'approche suivante:

également u peut combiner l'utilisation de scripts Apple dans les FastScript (gratuit pour les 10 raccourcis)

Pour ajouter votre script - juste Enregistrer le script dans /Library/Scripts . Après vous serez en mesure de définir un raccourci pour le nouveau script.

Si vous voulez ouvrir une nouvelle fenêtre de nouvel onglet u peut jouer au sein suivant:

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

Note: vous devez autoriser AppleScript à utiliser specialCapabilities dans les paramètres de sécurité dans ce cas.

+0

S'il vous plaît ajouter des explications à votre réponse. –

+0

@ ADreNaLiNe-DJ s'il vous plaît vérifier les mises à jour – gbk

0

Pas la plus courte solution, mais fonctionne également, et non 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 
+1

IMO cela n'introduit vraiment aucune nouvelle valeur. –

0

a marché 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 
Questions connexes