it-swarm.com.de

Öffnen Sie die URL in einem neuen Safari-Tab mit AppleScript

Ist es möglich, AppleScript zum Öffnen eines Links in einem neuen Tab in Safari zu verwenden?

29
Mark Szymanski

Das wird funktionieren:

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

Ich denke, das macht auch das, wonach Sie gefragt haben, aber es ist viel kürzer und weniger browserspezifisch:

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

Dadurch wird die angegebene URL in Ihrem Standardbrowser geöffnet. Wenn Sie es explizit in Safari öffnen möchten, verwenden Sie Folgendes:

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

Dies sollte in der Regel eine neue Registerkarte erstellen und fokussieren (oder eine vorhandene Registerkarte fokussieren, wenn die URL bereits geöffnet ist):

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

Es öffnet sich ein neues Fenster, wenn "Seiten in Registerkarten statt Fenstern öffnen" auf nie gesetzt ist.

tell application "System Events" to open location funktioniert nicht mit einigen URLs, die Nicht-ASCII-Zeichen enthalten:

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

Dadurch wird eine neue Registerkarte geöffnet, auch wenn neue Seiten in Windows geöffnet werden sollen:

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 öffnet das Fenster nicht, aber es zeigt das Fenster als window 1 für System Events an, was AXRaise sein kann.

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

Ein Problem ist, dass dies nur funktioniert, wenn die Systemsprache auf Englisch eingestellt ist.

3
user142019

Ich habe das folgende Skript verwendet, um Hunderte von Dokumenten in Registerkarten in einem einzigen Fenster zu öffnen.

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

Das funktioniert aber in Safari 5.1 auf Lion nicht mehr. Die neue Registerkarte wird geöffnet, aber die in den Eigenschaften von glob angegebene URL wird nicht geladen. Ich habe es folgendermaßen geändert, was jetzt funktioniert:

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

Es ist eine Weile her, seit eine neue Antwort hier veröffentlicht wurde. Ich denke, das ist der optimale Weg, dies zu tun. Es wird Safari geöffnet, wenn es nicht geöffnet ist, ein neues Fenster erstellen, wenn keine Fenster geöffnet sind, und die Registerkarte zum aktuellen (oder neu erstellten) Fenster hinzufügen.

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

Am Ende habe ich Automator dazu benutzt, was viel einfacher war und funktioniert. 

0
Laddy

Ich kann nicht kommentieren: -/Also werde ich antworten, um zu sagen, dass Tims Antwort (oben) ab OS X 10.8.5 funktioniert. Diese einzeilige Version seines Skripts funktioniert auch:

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

Arrgh - die eine Zeile läuft über. Hier ist es ohne die Code-Tags:

sagen Sie Fenster 1 der Anwendung "Safari", um die aktuelle Registerkarte festzulegen (Neue Registerkarte mit den Eigenschaften {URL: " http://www.stackoverflow.com "}).

0
Geoff Canyon

Ich habe einen Weg gefunden, mit Safari eine neue Registerkarte im Hintergrund zu öffnen.

tell application "Safari"

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

end tell

Während dieser Zeit schrieb ich diese Antwort 

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

Neue 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

Alle Vorschläge werden geschätzt

Freundliche Grüße

0
BK201 Freelance

Sie können folgenden Ansatz versuchen:

//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

Sie können auch die Verwendung des Apple-Skripts innerhalb von FastScript (kostenlos für 10 Verknüpfungen) kombinieren.

Um Ihr Skript hinzuzufügen, speichern Sie das Skript einfach in /Library/Scripts. Danach können Sie eine Verknüpfung für ein neues Skript festlegen.

Wenn Sie ein neues Fenster als einen neuen Tab öffnen möchten, können Sie in next spielen:

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

Hinweis: In diesem Fall müssen Sie AppleScript die Verwendung von specialCapabilities in den Sicherheitseinstellungen zulassen.

0
gbk

Arbeitete für mich in Safari v.11

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

Nicht die kürzeste Lösung, sondern funktioniert auch und nicht nur auf Englisch ...

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