2010-05-23 2 views

ответ

31

Это будет работать:

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

Не работает в 5.1, [AppleScript - Скрипт Safari 5.1, чтобы открыть вкладку - Переполнение стека] (http://stackoverflow.com/questions/6941630/script-safari-5-1-to-open-a-tab) – user495470

+0

@Lri: не работает в 6.0 либо; учитывая половину отказа от поддержки AppleScript даже в собственных приложениях Apple, вытеснение задачи командой оболочки с помощью утилиты 'open' является наиболее надежным подходом: ' make shell script 'open -a \ "Safari \" \ " "&" http://stackoverflow.com "&" \ "" ' – mklement0

+0

Это отлично работает в Safari 9.1.2. Можно ли всегда открывать новое окно, а добавить вкладку в существующее окно? –

3

Код:

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 

Одна проблема заключается в том, что это работает только если языком системы является английский.

5

Это обычно должны создать новую вкладку и сфокусировать его (или фокус существующую вкладку, если URL уже открыт):

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

Это открывает новый если «Открывать страницы в вкладках, а не в окнах» никогда не установлено.

tell application "System Events" to open location не работает с некоторыми URL-адресов, содержащих не-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 

Это открывает новую вкладку, даже если новые страницы планируется открыть в окнах:

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 не поднимает окно, но делает это окно как window 1 Системным событиям, которое может AXRaise.

+0

Открытое местоположение, похоже, открывает окна или вкладки на основе настроек «Открытые страницы в вкладках вместо окон» - создание новой версии вкладки создает вкладки, даже если Safari в противном случае настроен на всегда открывать окна. – haa

+0

Идеально подходит для моего использования, так как я не хочу, чтобы он создавал новую вкладку, если предыдущая еще открыта. Спасибо. –

+0

привет @ Lri Мне нужна помощь .. ваш код работает на меня только для non-ascii, я пробовал для ascii ... он открывается в новой вкладке, но я хочу, чтобы она была на той же вкладке. Можете ли вы помочь –

3

Я использовал следующий скрипт, чтобы открыть сотни документов на вкладках в одном окне.

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 

Но это больше не работает в Safari 5.1 на Lion. Он откроет новую вкладку, но не будет загружать URL-адрес, указанный в glob свойства. Я изменил его к следующему, который сейчас работает:

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

Я думаю, что это также делает то, что вы просили, но гораздо короче и менее браузер конкретны:

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

Откроется указанный URL в вашем браузере по умолчанию. И если вы явно хотите, чтобы открыть его в Safari, используйте:

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

Я не могу комментировать: -/так что я отвечу, чтобы сказать, что ответ Тима (выше) работает на OS X 10.8.5. Это одна линия версия его сценария также работает:

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

Arrgh - одна линия переполнен. Здесь без кода тегов:

СКАЖИТЕ окно 1 приложения «Сафари», чтобы установить текущую вкладку, чтобы (сделать новую вкладку со свойствами {URL: «http://www.stackoverflow.com»})

0

Я закончил с использованием Automator сделать это было намного проще, и это работает.

1

Прошло некоторое время, так как новый ответ был опубликован здесь. Я думаю, что это оптимальный способ сделать это. Он откроет Safari, если он не открыт, создайте новое окно, если нет открытых окон, и добавьте вкладку в текущее (или вновь созданное) окно.

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

Вы можете попробовать следующий подход:

Также и может сочетать использование Apple, сценарий в FastScript (бесплатно для 10 клавиш)

Чтобы добавить скрипт - просто сохранить сценарий в /Library/Scripts , После того, как вы сможете установить ярлык для нового скрипта.

Если вы хотите, чтобы открыть новое окно, чем новая вкладка и может играть в следующем:

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

Примечания: вам нужно разрешить использовать AppleScript specialCapabilities в настройках безопасности в данном случае.

+0

Пожалуйста добавьте объяснения в свой ответ. –

+0

@ ADreNaLiNe-DJ, пожалуйста, проверьте обновления – gbk

0

Не кратчайшее решение, но и работает, а не только на английском языке ...

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 это действительно не вводит никакого нового значения. –

0

Работал для меня в Safari v.11

tell application "Safari" 
    tell window 1 
     make new tab with properties {URL:"https://twitter.com"} 
    end tell 
end tell 
Смежные вопросы