Hack #15. Fix Broken Pop-up Links

Change javascript: pseudo-protocol pop-up windows into normal hyperlinks.

Advanced browser users do more than just click hyperlinks. They also right-click them, print them, and save them to disk. All these additional behaviors are broken when web developers incorrectly use the javascript: pseudo-protocol to create pop-up windows.

A broken pop up looks like this:

	<a href="javascript:popup('http://youngpup.net/')">go to youngpup.net</a>

In this example, the web developer is attempting to create a link that opens in a new pop-up window. Unfortunately, the value of the href attribute is not a valid URL. It's just JavaScript, which works only in the context of the current page. This means that if a user right-clicks the link and tries to open it in a new window, the popup function is undefined and the user gets an error message. Likewise, if the user attempts to save or print the contents of the hyperlink, the browser first has to download it, which it cannot do because the href doesn't contain a URL; it contains a random JavaScript statement.

There is no reason for web developers ever to do this. You can easily write annoying pop-up windows and retain the benefits of regular hyperlinks, by adding an onclick handler to a regular hyperlink:

	<a href="http://youngpup.net/" 
           onclick="window.open(this.href); return false;"> 
		 go to youngpup.net 
	</a>

Using Greasemonkey, we can scan for javascript: links that appear to open pop-up windows and then change them to use ...

Get Greasemonkey Hacks now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.