如何使用AppleScript中的窗口ID将Safari窗口带到前台?

时间:2016-06-08 21:40:00

标签: macos scripting window applescript

我有一个脚本,除其他外,它记录了它在启动时被激活的浏览器窗口。事情发生在中间,然后脚本需要返回到原始窗口并且标签被调用。

问题是,用户可以在脚本运行期间更改活动窗口或选项卡。我想返回调用脚本时使用的窗口和选项卡。

以下是我尝试(和失败)的方法:

tell application "Safari"
    if (id of front window) is not (windowID of browserInfo)
        display dialog "Made it in the block!"
        display dialog (get index of window 1)
        display dialog (get index of window (windowID of browserInfo))
-- ...

当然,对话框都是用于调试的。 现在,browserInfo是一个对象,其windowID属性对应于调用脚本的Safari窗口。这通常类似于' 889'或 1195'或其他一些数字。

现在,有趣的是,当模拟在一个窗口中启动的用户然后激活另一个窗口时,前四行正常启动。第四行按预期返回' 1'但第五行给出了错误:Safari got an error: Can't get window 809. Invalid index.

当我可以使用的只是一个ID时,如何获取Safari窗口的索引?

(是的,URL和窗口标题很好,但它们超出了我的应用范围。用户可能有多个窗口打开,具有相同的URL和窗口标题。所以我需要特定的窗口ID。)

1 个答案:

答案 0 :(得分:2)

我相信这就是你所追求的......

on run
    tell application "Safari"
        set myID to id of window 1
        set myTab to current tab of window 1
    end tell

    do shell script "sleep 8" -- simulates time where user may change tabs

    tell application "Safari"
        set index of window id myID to 1
        set current tab of window 1 to myTab
    end tell
end run