Submit Hint Search The Forums LinksStatsPollsHeadlinesRSS
14,000 hints and counting!


Click here to return to the 'Automatically zoom new pages in Safari' hint
The following comments are owned by whoever posted them. This site is not responsible for what they say.
Automatically zoom new pages in Safari
Authored by: trosberg on Jan 21, '10 10:39:38AM
The best way to write recurring actions in AppleScript is to use "idle" block. Not actually tested fully, this hint written as an idle app follows. Also two test handlers are separated for readability. Save as an application, "Stay open" chosen in save dialog. When run, it tests and functions every 1 second. Can someone using English as UI language test it? Cheers, Tuomas Rosberg
global appPath, previousURL

on run
  set appPath to (path to application "Safari")
end run
----------
on idle
  if SafariRunningTest() is true then
    set p to (path to frontmost application)
    if p is not appPath then -- Safari is not the frontmost application
      -- idle on!
    else -- Safari is the frontmost app
      tell application "Safari"
        set currentURL to URL of current tab of window 1 -- window 1 is apparently always the active window in Safari
      end tell
      if currentURL is not "" then -- this will ignore new tabs where a page is not yet loaded
        if currentURL is not previousURL then -- check, if we have already zoomed in this tab
          if ActualSizeChecked() is false then
            -- here we fire off the key shortcuts 
            -- these may differ according to the OS X language
            tell application "System Events"
              keystroke "+" using command down
              keystroke "+" using command down
            end tell
            set previousURL to currentURL
          end if
        end if
      end if
    end if
  end if
  return 1 -- to repeat every 1 second
end idle
------
on SafariRunningTest()
  tell application "System Events"
    return exists of process "Safari"
  end tell
end SafariRunningTest
------
on ActualSizeChecked()
  tell application "System Events"
    tell process "Safari"
      -- these differ according to language chosen in System Prefs
      return enabled of menu item "Actual Size" of menu "View" of menu bar item "View" of menu bar 1
    end tell
  end tell
end ActualSizeChecked


[ Reply to This | # ]
Automatically zoom new pages in Safari
Authored by: grav on Jan 22, '10 05:43:42AM
Very nice!
It complains about previousURL not being defined, but inserting
set previousURL to ""
in the run-handler fixes this.

[ Reply to This | # ]
Automatically zoom new pages in Safari
Authored by: grav on Jan 22, '10 07:01:39AM
Another thing, we have to wrap the
if currentURL is not "" then
...
end if
in a try-statement, since currentURL won't be defined, if we just opened a new tab and haven't typed a URL yet. This wasn't obvious from my original script.
I'll post the corrected script in the root of the comments.

[ Reply to This | # ]