2011-03-14 73 views
2

有時候,我得到這個錯誤:的AppleScript:約奇怪的錯誤不定義的變量

./mac/get_foregroundapp_info.scpt:254:265: execution error: The variable window_name is not defined. (-2753)

這很奇怪,因爲我看不到變量是如何沒有定義。這是代碼:

global frontApp, frontAppName, idleTime, window_name 

tell application "System Events" 
    set frontApp to first application process whose frontmost is true 
end tell 

set window_name to "" 
try 
    set window_name to name of front window of frontApp 
end try 
if window_name = missing value then 
    set window_name to "" 
end if 

錯誤出現在行if window_name ...

但它似乎很少,也許在約2-5%的情況下。

當我按住Command鍵並將鼠標懸停在Chrome中的某個鏈接上時,它似乎更常出現/總是(?)。不知道現在或以任何方式完全是隨機行爲。


編輯:它似乎總是出現,當我有一個圖像打開預覽。奇怪的是,它似乎工作,如果我打開預覽PDF。


作爲夾頭所指出的,也能夠抓住這個「未定義-variable'誤差與另一try塊。

但我的主要問題實際上是:爲什麼變量undefined?那是什麼意思?因爲就我所見,它必須在那個地方定義。


(順便說一句,有關獲取窗口標題這段代碼有幾個缺點,其中之一是這裏描述的,也並不總是因爲這個工作。見另一種解決方案here這似乎總是工作,也沒有這種奇怪的錯誤。)

+0

你是如何執行此代碼?在測試代​​碼時,我無法想到任何_not_的輕量級方法,讓AppleScript Editor成爲最前端的應用程序。 – 2011-03-14 01:33:23

+0

@Uriah:我把它放在一個文件中,然後在終端上,我執行了這個:'while true;做睡1; osascript -ss myscript;完成' – Albert 2011-03-14 08:10:14

回答

1

這聽起來像是一個錯誤在try塊出現。嘗試在那裏放置一個錯誤處理程序或擺脫try塊,因爲現在它只會使變量不被定義,然後你會看到在下一行中看到的錯誤。

+0

沒有'try'塊也會出現同樣的問題。 – Albert 2011-03-14 01:10:49

0

雖然我不知道爲什麼你會得到這個錯誤,你有沒有嘗試過這樣的事情?

try 
    set window_name to name of front window of frontApp 
on error 
    set window_name to "" 
end try 

或更符合你已經擁有

set window_name to "" 
set window_name to name of front window of frontApp 
try 
    if window_name = missing value then set window_name to "" 
on error 
    set window_name to "" 
end try 
+0

第二個實際工作,因爲它似乎趕上'未定義變量'的錯誤。但我主要的問題主要是:爲什麼變量未定義?那是什麼意思?因爲就我所見,它必須在那個地方定義。 – Albert 2011-03-14 08:14:46

+0

我不會立即明白爲什麼你會收到錯誤。我將不得不調試完整的腳本來試圖解決這個問題。如果你有腳本調試器,你可以嘗試使用它。如果你有興趣,它有一個演示下載。 http://latenightsw.com – Chuck 2011-03-14 21:02:15

0

保持我找到解決辦法,那我說:「錯誤-2753」是假的錯誤。因爲我的解決方案是找到並正確添加塊

tell application "PrettyApp" 
    end tell --PrettyApp