macos 使用 AppleScript 在新的 Safari 选项卡中打开 URL

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/2892622/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-21 06:57:42  来源:igfitidea点击:

Open URL in new Safari tab with AppleScript

macossafariapplescript

提问by Mark Szymanski

Is it possible to use AppleScript to open a link in a new tab in Safari?

是否可以使用 AppleScript 在 Safari 的新选项卡中打开链接?

回答by Tim Lewis

This will work:

这将起作用:

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

回答by rien333

I think this also does what you asked for, but it is much shorter and is less browser-specific:

我认为这也可以满足您的要求,但它更短,并且不特定于浏览器:

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

This will open the specified URL in your default browser. And if you explicitly want to open it in Safari, use this:

这将在您的默认浏览器中打开指定的 URL。如果您明确想在 Safari 中打开它,请使用以下命令:

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

回答by Lri

This should usually create a new tab and focus it (or focus an existing tab if the URL is already open):

这通常应该创建一个新选项卡并聚焦它(如果 URL 已经打开,则聚焦现有选项卡):

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

It opens a new window if "Open pages in tabs instead of windows" is set to never though.

如果“在选项卡而不是窗口中打开页面”设置为从不,它会打开一个新窗口。

tell application "System Events" to open locationdoesn't work with some URLs that contain non-ASCII characters:

tell application "System Events" to open location不适用于某些包含非 ASCII 字符的 URL:

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

This opens a new tab even when new pages are set to open in windows:

即使将新页面设置为在 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 1doesn't raise the window, but it makes the window appear as window 1to System Events, which can AXRaiseit.

set index to 1不提升窗口,但它使窗口显示为window 1系统事件,它可以AXRaise

回答by Pascal

I've been using the following script to open hundreds of docs into tabs in a single window.

我一直在使用以下脚本在单个窗口中将数百个文档打开到选项卡中。

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

But that no longer works in Safari 5.1 on Lion. It would open the new tab, but it wouldn't load the URL provided in the properties glob. I modified it to the following, which now works:

但这在 Lion 上的 Safari 5.1 中不再适用。它会打开新选项卡,但不会加载属性 glob 中提供的 URL。我将其修改为以下内容,现在可以使用了:

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

回答by Pascal

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

One problem is that this only works if the system's language is set to English.

一个问题是,这仅在系统语言设置为英语时才有效。

回答by BallpointBen

It's been a while since a new answer's been posted here. I think this is the optimal way to do this. It will open Safari if it's not open, create a new window if there are no windows open, and add the tab to the current (or newly created) window.

自从在这里发布新答案以来已经有一段时间了。我认为这是做到这一点的最佳方式。如果 Safari 未打开,它将打开 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

回答by gbk

You can try following approach:

您可以尝试以下方法:

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

Also u can combine usage of Apple script within FastScript(free for 10 shortcut)

您也可以在FastScript 中结合使用 Apple 脚本(10 个快捷方式免费)

To add your script - just save script in /Library/Scripts. After you will be able to set some shortcut for new script.

要添加您的脚本 - 只需将脚本保存在/Library/Scripts. 之后您将能够为新脚本设置一些快捷方式。

If you want to open new Window than new tab u can play within next:

如果你想打开新窗口而不是新标签,你可以在下一个播放:

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

Note: you need to allow AppleScript to use specialCapabilities in security settings in this case.

注意:在这种情况下,您需要允许 AppleScript 在安全设置中使用 specialCapabilities。

回答by Chris Eneman

Not the shortest solution but also works, and not only in English ...

不是最短的解决方案,但也有效,而且不仅在英语中......

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

回答by Mudlabs

Worked for me in Safari v.11

在 Safari v.11 中对我来说有效

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

回答by BK201 Freelance

I found a way to open a new tab in the background with Safari.

我找到了一种使用 Safari 在后台打开新标签的方法。

tell application "Safari"

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

end tell

During the time I wrote this answer I made this

在我写这个答案的时候,我做了这个

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

New 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

Any suggestions will be appreciate

任何建议将不胜感激

Best regards

最好的祝福