2016-04-21 45 views
0

我試圖編寫一個applescript,在瀏覽器中打開一個html頁面,等待它加載,然後運行window.find檢查特定的關鍵字。 頁面載入後儘快運行.find是非常重要的,但以前不會嘗試。 如果關鍵字存在,腳本將點擊「下一步」按鈕。 這是一個循環我試圖讓,檢查HTML是否加載document.readyState「Access not allowed」with Applescript + Javascript等待頁面加載

to checkInteractive()  

    repeat 60 times 

     try  
      tell application "Safari" 
       set a to do JavaScript 
       "document.readyState" in document 1 
      end tell 
     end try 

     if a = "interactive" then 
      exit repeat 
     end if 

     delay 0.01 

    end repeat 

end checkInteractive 

,但我得到這個錯誤:在文檔1.訪問

語法錯誤不能得到「document.readyState」不允許。

有誰知道我應該做什麼不同? 或者是否有另一種方法來檢查html是否被加載?

回答

1

要麼把本聲明一行

tell application "Safari" 
    set a to do JavaScript "document.readyState" in document 1 
end tell 

或使用AppleScript的行分隔符

tell application "Safari" 
    set a to do JavaScript ¬ 
     "document.readyState" in document 1 
end tell 
+0

非常感謝!不知道換行會以這種方式影響它。 現在我改了一行:「if a =」interactive「」to「if a is equal to」interactive「」 但由於某種原因,當我調用方法時,循環不會在第一頁上運行,但隨後無限期地運行在下面的頁面上即使加載了html。 你知道還有什麼可能是錯的嗎? – LasseAarhus

+0

'='和'等於'是同義詞。嘗試檢查「complete」而不是「interactive」。 – vadian

+0

是的!謝謝。剛想出一個我自己太:)謝謝很多! – LasseAarhus