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);
}
}