O'Reilly logo

Greasemonkey Hacks by Mark Pilgrim

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Hack #47. Add a Site Search

Google can restrict your search to a specific site. You can take advantage of this feature to add a site search to every page you visit.

There are two ways to restrict Google to return pages on a specific site. The first way is to use the site: keyword in your search results, like this:

	foo site:example.com

This Google search searches for foo but returns only pages on the example.com domain. On the search results page, the URL looks like this:

	http://www.google.com/search?hl=en&q=foo+site%3Aexample.com

The second way is to do it in two steps. First, search for foo; then, at the bottom of the search results, click "Search within results." You will get to a page with another search form, where you can enter site:example.com. The actual search results will be the same as the previous one-step method, but the URL looks different:

	http://www.google.com/search?hl=en&lr=&c2coff=1&q=foo&as_q=site%3Aexample.com

This difference is important, because the keyword foo and the site name site:example.com are in separate query parameters. It makes it trivial to reverse-engineer that URL to construct a form that searches a specific site. The form would display a single visible text box named q and also contain a hidden form field named as_q that contains the domain of the current page with a site: prefix.

The Code

The code is in two parts. The first part creates the site search form and inserts it at the top of the page. The second part styles the form so it is unobtrusive ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required