How to Warn Before Opening PDF Links with User Scripts

Warn Before Opening PDF Links

Make your browser double-check that you really want to open that monstrous PDF.

How many times has this happened to you? You're searching for something, or just browsing, and click on a promising-looking link. Suddenly, your browser slows to a crawl, and you see the dreaded " Adobe Acrobat Reader" splash screen. Oh no, you've just opened a PDF link, and your browser is launching the helper application from hell.

This hack saves you the trouble, by popping up a dialog box when you click on a PDF file to ask you if you're sure you want to continue. If you cancel, you're left on the original page and can continue browsing in peace.

This hack is derived from a Firefox extension called TargetAlert, which offers more features and customization options. Download it at http://bolinfest.com/targetalert/.


The Code

This user script runs on all pages. It iterates through the document.links collection, looking for links pointing to URLs ending in .pdf. For each link, it attaches an onclick handler that calls the window.confirm function to ask you if you really want to open the PDF document.

Save the following user script as pdfwarn.user.js:

 // ==UserScript==
 // @name          PDF Warn
 // @namespace     http://www.sencer.de/
 // @description   Ask before opening PDF links
 // @include       *
 // ==/UserScript==
 // based on code by Sencer Yurdagül and Michael Bolin
 // and included here with their gracious permission
 // http://www.sencer.de/code/greasemonkey/ pdfwarn.user.js
 for (var i = document.links.length - 1; i >= 0; i--) {
  var elmLink = document.links[i];
  if (elmLink.href && elmLink.href.match(/^[^\\?]*pdf$/i)) {
   var sFilename = elmLink.href.match(/[^\/]+pdf$/i); 
   elmLink.addEventListener('click', function(event) {
    if (!window.confirm('Are you sure you want to ' + 
      'open the PDF file "' + 
      sFilename + '"?')) {
      event.stopPropagation();
      event.preventDefault();
    }
   }, true);
  }
 }

Running the Hack

After installing the user script (Tools Install This User Script), go to http://www.google.com and search for census filetype:pdf. At the time of this writing, the first search result is a link to a PDF file titled "Income, Poverty, and Health Insurance Coverage in the United States." Click the link, and Firefox will pop up a warning dialog asking you to confirm opening the PDF, as shown in Figure 2-9.

Figure 2-9. PDF confirmation dialog

If you click OK, the link will open, Firefox will launch the Adobe Acrobat plug-in, and you will see the PDF without further interruption. If you click Cancel, you'll stay on the search results page, where you can click "View as HTML" to see Google's version of the PDF file converted to HTML.