Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

why doesn't 'do javascript' call in Applescript execute when the same code typed into browser does?

I'm trying to figure out why my Applescript does nothing when the same javascript code typed into a Safari location bar works.

Go to a search results page, such as: http://www.google.com/search?q=test . For the correct behavior, type this into the location bar and hit enter:

javascript: document.getElementsByClassName('vspib')[0].click();

You'll see that it selects the magnifier for the first search result.

This is what I want to make happen via javascript. So I typed up the following:

tell application "Safari"
    activate
    do JavaScript "document.getElementsByClassName('vspib')[0].click();" in document 1
end tell

However, it does nothing. Any ideas?

like image 305
mix Avatar asked Jul 03 '11 06:07

mix


1 Answers

The problem is that do JavaScript has to correctly address a tab in a Safari window.

The following script works for me, if the search results page is the current tab in the frontmost Safari window:

tell application "Safari"
    activate
    set theScript to "document.getElementsByClassName('vspib')[0].click();"
    do JavaScript theScript in current tab of first window
end tell
like image 170
sakra Avatar answered Oct 27 '22 00:10

sakra