2016-06-08 85 views
0

我有一個腳本,除其他外,它記錄了它在啓動時被激活的瀏覽器窗口。事情發生在中間,然後腳本需要回到原來的窗口和選項卡上。如何使用AppleScript中的窗口ID將Safari窗口帶到前臺?

問題是,用戶可能會在腳本運行期間更改活動窗口或選項卡。我想返回到調用腳本時使用的窗口和選項卡。

以下是我正在嘗試(和失敗)要做到這一點:

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.

如何才能得到一個Safari窗口的索引,當我可以使用的是一個ID? (可以,URL和窗口標題是很好的東西,但是它們超出了我的應用程序的範圍,用戶可能會打開多個窗口,並且具有相同的URL和窗口標題,所以我需要特定的窗口標識)。

回答

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 
+0

好極了!我遺漏的一部分是在窗口之後但在變量之前包含'id'。即使試圖設置id爲(browserInfo的windowID)的窗口的set index也沒有切割它。 – Rydash