------------------------ check_Safari_page_loaded handler ------------------------
on check_Safari_page_loaded(wait_secs)
set loaded to false
set cnt to 0
repeat until loaded
set cnt to cnt + 1
delay 0.5
tell application "System Events" to ¬
tell process "Safari"
set x to (value of static text 1 of window 1 as text)
set y to ""
if exists group 1 of window 1 then
if exists (static text 1 of group 1 of window 1) then set y to (value of static text 1 of group 1 of window 1 as text)
end if
if y = "" then
set w_Name to x
else
set w_Name to y
end if
set loading to false
if (w_Name begins with "Contacting") then set loading to true
if (w_Name begins with "Loading") then set loading to true
if (w_Name begins with "Untitled") then set loading to true
if loading and not (cnt > (wait_secs * 2)) then
set loaded to false
else
set loaded to true
exit repeat
end if
end tell -- process Safari
end repeat
if cnt > wait_secs * 2 then set loaded to false
return loaded
end check_Safari_page_loaded
------------------------ check_Safari_page_loaded handler ------------------------
"static text 1 of window 1" is the text shown at the bottom of the Safari window if you do a
"View>Show Status Bar" command.
• for a brand-new window that hasn't loaded a single item, this text has the value "Untitled"
• if the server is being contacted, the text begins with "Contacting"
• if an item is being sent (i.e. a jpeg or some text), the text begins wit "Loading"
if more than one window is open, then the status bar text could be in
"static text 1 of group 1 of window 1", thus the second variable and the switch.
(I discovered this when the handler failed and I started digging for the reason).
I do several scripts where I need to load a page where I want to print the contents
to a PDF. These pages sometimes take a fair amount of time to load. I had to have
a reliable way to ensure that they were completely loaded before I tried to print.
This handler works 95-98% of the time.
The wait_secs parameter is the time, in seconds, to wait for the page to load. If the
page hasn't loaded when the wait time has passed, the handler returns with a value
of false. If the page is loaded, it returns with a value of true.
Hope this helps. Sorry I didn't see this at the time you were asking your question.
Jim Brandt