How to Automatically Link to Printer-Friendly Versions with User Scripts
Automatically Link to Printer-Friendly Versions
Get the content without the cruft by changing selected article links to "printer-friendly" versions.
Most online news sites offer printer-friendly versions of their articles. Such pages usually contain the entire article text in one page, instead of forcing you to click through to read multiple pages. They also leave out the site's global navigation bar. They might also have fewer ads, or no ads at all.
Well, that all sounds appealing to me; why isn't that the default? This hack makes it the default, by changing links to selected news sites to point to the printer-friendly article instead.
The Code
This user script runs on all pages. It uses regular expressions to find specific patterns in link URLs and then performs site-specific alterations to change the link to point to the associated printer-friendly page instead. Of course, it works only on links to the sites it knows about, but it can easily be extended with knowledge of how other sites associate normal article pages and printer-friendly pages.
Save the following user script as bstopthepresses.user.js:
// ==UserScript== // @name Stop The Presses! // @namespace http://diveintomark.org/projects/greasemonkey/ // @description make links point to printer-friendly versions // @include * // ==/UserScript== var urlPage = window.location.href; for (var i = document.links.length - 1; i >= 0; i--) { var elmLink = document.links[i]; var urlHref = elmLink.href; // Yahoo News if ((urlHref.match(/\/\/(story\.)?news\.yahoo\.com\//i)) && ((urlHref.match(/sid=/i)) || (urlHref.match(/tmpl=story/i))) && (!urlHref.match(/printer=1/i))) { if (urlHref.match(/\?/i)) { urlHref += '&printer=1'; } else { urlHref += '?printer=1'; } } // NYTimes if ((urlHref.match(/nytimes\.com\/2/i)) && (!urlHref.match(/pagewanted=/i))) { if (urlHref.match(/\?/i)) { urlHref += '&pagewanted=print'; } else { urlHref += '?pagewanted=print'; } } // CNET if (((urlHref.match(/com\.com\//i)) || (urlHref.match(/cnet\.com\//i)) || (urlPage.match(/com\.com\//i)) || (urlPage.match(/cnet\.com\//i))) && (urlHref != elmLink. textContent)) { urlHref = urlHref.replace(/2100-/g, '2102-'); urlHref = urlHref.replace(/2008-/g, '2102-'); } // Washington Post if ((urlHref.match(/washingtonpost\.com\/wp\-dyn\/content\/article/i)) && (!urlHref.match(/_pf\./i))) { urlHref = urlHref.replace(/.html/g, '_pf.html'); } if (urlHref != elmLink.href) { elmLink.href = urlHref; elmLink.addEventListener('click', function(event) { window.top.location.href = urlHref; event.stopPropagation(); event.preventDefault(); return false; }, true); } }
Running the Hack
After installing the user script (Tools Install This User Script), go to http://news.com.com. (Yes, there are really two .coms in that URL. Don't ask.) Click any article link to read that article. Instead of the usual News.com article page, you will immediately go to the printer-friendly version, as shown in Figure 9-10.
Figure 9-10. News.com printer-friendly page

As printer-friendly pages have become more popular, news sites have begun adding advertisements and other clutter to them, but they are still an improvement over the original article pages.