2010-05-23 13 views

risposta

31

Questo funziona:

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

non funziona in 5,1, [AppleScript - Script Safari 5.1 per aprire una scheda - Stack Overflow] (http://stackoverflow.com/questions/6941630/script-safari-5-1-to-open-a-tab) – user495470

+0

@Lri: Non funziona in 6.0 entrambi; dato il supporto semi-abbandonato di AppleScript anche nelle applicazioni Apple, l'out-sourcing del task con un comando shell usando l'utility 'open' è l'approccio più affidabile: ' do shell script "open -a \" Safari \ "\" "&" http://stackoverflow.com "&" \ "" ' – mklement0

+0

Funziona perfettamente con Safari 9.1.2. È possibile aprire sempre una nuova finestra piuttosto che aggiungere la scheda nella finestra esistente? La posizione aperta –

3

Codice:

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 problema è che questo funziona solo se la lingua del sistema è impostata su inglese.

5

Questo dovrebbe in genere creare una nuova scheda e mettere a fuoco (o messa a fuoco una scheda esistente se l'URL è già aperto):

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

apre una nuova finestra se "Apri pagine in schede invece di finestre" è impostato su mai.

tell application "System Events" to open location non funziona con alcuni URL che contengono caratteri 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 

questo apre una nuova scheda anche quando nuove pagine sono impostate per aprire in finestre:

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 non solleva la finestra, ma fa apparire la finestra come window 1 in Eventi di sistema, che può essere impostata su AXRaise.

+0

sembra aprire le finestre o le schede in base all'impostazione delle preferenze "Apri pagine in schede anziché in finestre": la nuova scheda crea nuove schede anche se Safari è configurato per aprire sempre Windows. – haa

+0

Perfetto per il mio utilizzo, dal momento che non voglio creare una nuova scheda se quella precedente è ancora aperta. Grazie. –

+0

hi @Lri ho bisogno di aiuto .. il tuo codice funziona solo per me non-ascii, ho provato per ascii ... si apre in una nuova scheda, ma lo voglio nella stessa scheda .. puoi aiutarmi per favore –

3

Ho utilizzato il seguente script per aprire centinaia di documenti in schede in un'unica finestra.

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 

Ma questo non funziona più in Safari 5.1 su Lion. Aprirà la nuova scheda, ma non caricherà l'URL fornito nel glob delle proprietà. Ho modificato al seguito, che ora funziona:

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

penso che questo fa anche quello che hai chiesto, ma è molto più breve e meno-browser specifico:

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

questo aprirà l'URL specificato nel browser predefinito. E se si vuole esplicitamente per aprirlo in Safari, utilizzare questo:

do shell script "open -a Safari 'http://www.webpagehere.com'" 
0

non posso commentare: -/così mi risponderà a dire che la risposta di Tim (sopra) funziona come di OS X 10.8.5. Funziona anche questa versione a una riga del suo script:

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

Arrgh - la prima riga è piena. Qui è senza il codice tag:

finestra raccontano 1 di applicazione "Safari" per impostare scheda corrente a (fare nuova scheda con le proprietà {URL: "http://www.stackoverflow.com"})

0

ho finito per usare Automator per fare questo è stato molto più semplice e funziona.

1

È passato un po 'di tempo da quando è stata pubblicata una nuova risposta. Penso che questo sia il modo ottimale per farlo. Aprirà Safari se non è aperto, crea una nuova finestra se non ci sono finestre aperte e aggiunge la scheda alla finestra corrente (o appena creata).

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

Si può provare seguente approccio:

anche u può combinare l'utilizzo di AppleScript all'interno FastScript (gratuito per 10 scorciatoia)

Per aggiungere lo script - semplicemente salvare lo script in /Library/Scripts . Dopo sarai in grado di impostare qualche scorciatoia per il nuovo script.

Se si desidera aprire nuove finestre di nuova scheda u può giocare entro il prossimo:

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

Nota: è necessario consentire AppleScript per utilizzare specialCapabilities nelle impostazioni di protezione in questo caso.

+0

Per favore aggiungere spiegazioni alla tua risposta. –

+0

@ ADreNaLiNe-DJ si prega di controllare gli aggiornamenti – gbk

0

non è la soluzione più breve, ma anche funziona, e non solo in inglese ...

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 questo in realtà non introduce alcun nuovo valore. –

0

ha lavorato per me in Safari v.11

tell application "Safari" 
    tell window 1 
     make new tab with properties {URL:"https://twitter.com"} 
    end tell 
end tell 
Problemi correlati