OS X 10.10(優勝美地)之前,我可以保證一個AppleScript對話框告訴「當前應用程序」來激活獲得焦點:如何確保OS X 10.10(優勝美地)的Applescript對話框重點?
tell current application
activate
set output to (do shell script "printf '" & hostsLine & commentString & "' >> /private/etc/hosts" with administrator privileges)
end tell
這將使密碼對話框到前面鍵入的對話框。不再出現焦點在優勝美地,你必須點擊它才能打字。
在堆棧交換和其他地方搜索沒有提供任何解決方案/解決方法。
有沒有人有辦法在OS X 10.10?
更新1:萬一其他人遇到這個問題,它似乎是一個新的沙盒問題。非密碼對話框正確地獲得焦點。事實上,在「使用管理員權限」密碼對話框之前的非密碼對話框將導致密碼對話框也有焦點。我添加了一個對話框來確認Safari在測試時仍然是前端應用程序,並發現了這一點。作爲一種解決方法,我添加了超時1(秒)的前面的對話框,直到找到更好的解決方案。
tell me -- alternate method: tell current application
activate
display dialog "Trying to get focus…" with title "Can't focus in Yosemite" buttons {"Cancel", "Idle"} cancel button "Cancel" giving up after (1)
set output to (do shell script "printf '" & hostsLine & commentString & "' >> /etc/hosts" with administrator privileges)
end tell
有趣的是,BBEdit中的身份驗證保存幫手腳本(MAS的版本了)使用「具有管理員權限的」密碼對話框。但它在優勝美地得到了正確的關注。本地應用程序調用applescript與Applescript之間有什麼不同,它告訴應用程序如何執行此操作?
on documentShouldFinalizeAuthenticatedSave(theDocument, tempFilePath, destinationPath)
-- on input: tempFilePath points to the contents of the document written to a temp file, ready to move to the destination; destinationPath is where the file should be copied.
-- on exit: if the operation succeeded, delete the temp file (or else the application will assume the operation failed) and return YES for success
-- this is pretty straightforward: "cp tmpFilePath destinationPath"
do shell script "cp" & " " & quoted form of tempFilePath & " " & quoted form of destinationPath with administrator privileges
-- now remove the temp file, this indicates to the application that we did the work
do shell script "rm" & " " & quoted form of tempFilePath
return true
end documentShouldFinalizeAuthenticatedSave
更新2:如果有人好奇,一個Safari瀏覽器助手腳本的這部分我老婆阻止垃圾郵件的彈出廣告網站,如mackeeper.zeobit.com有模態對話框。編輯/ etc/hosts有點太複雜/艱鉅,她想要一個交鑰匙解決方案。如果有興趣,我可以發佈整個腳本。它在10.9以下工作正常,但密碼問題的焦點在10.10中很煩人。
我認爲蘋果在10.11版中修復的是10.10.x中的一個bug。無論哪種情況,從工作10.9版本未修改的腳本,在10.11再次運行。以防萬一任何人需要另一個升級的理由。 ;) – 2015-10-30 00:03:35