Hack 81. Disable Targets for Downloads

 < Day Day Up > 

Don't open a new window when downloading a file.

Here's something that annoys me. I click a link to download a file, and the site forces the link to open in a new window. Firefox begins to download the file, but the new window stays around. Seriously, what's up with that? Does anybody actually want this behavior?

This hack modifies links that point to known binary file types, so they just download the file and stay on the same page.

9.6.1. The Code

This user script runs on all web pages. For performance reasons, it creates a regular expression object in advance that matches known binary file types. (You can add your own if you like.) Then, it scans the page looking for links that match the file type expression and open a new window, and removes the target attribute to neutralize the extra blank window.

Save the following user script as disable-targets-for-downloads.user.js:

 // ==UserScript== // @name  Disable Targets For Downloads // @namespace  http://www.rhyley.org/ // @description  Don't open a new window on links to binary files // @include      http://* // ==/UserScript== // based on code by Jason Rhyley // and included here with his gracious permission // Add other file extensions here as needed var oExp = new RegExp("(\.zip|\.rar|\.exe|\.tar|\.jar|\.xpi|\.gzip|" +     "\.gz|\.ace|\.bin|\.ico|\.jpg|\.gif|\.pdf)$", "i"); var snapLinks = document.evaluate("//a[@onclick] | //a[@target]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0; i < snapLinks.snapshotLength; i++) { var elmLink = snapLinks.snapshotItem(i); if (elmLink.href && oExp.exec(elmLink.href)) { elmLink.target = ''; elmLink.addEventListener('click', function(e) {     e.stopPropagation(); e.preventDefault(); }, true); } } 

9.6.2. Running the Hack

Before installing this script, go to http://www.techsmith.com/download/ensharpendefault.asp. Click one of the download links. The site opens a new window, and then Firefox proceeds to download the file and leave the blank window in the foreground, as shown in Figure 9-9.

Figure 9-9. Useless blank window


Now, install the user script (Tools Install This User Script), and go back to http://www.techsmith.com/download/ensharpendefault.asp. Click the download link again. Hooray! This time, Firefox just downloads the file. The extra blank window has been neutralized.

9.6.3. Hacking the Hack

I scoured my CVS repository configuration files to find a list of binary file extensions. Here is a more complete list of file types:

 var oExp = new RegExp("(\.zip|\.rar|\.exe|\.tar|\.jar|\.xpi|\.gzip|" +     "\.gz|\.ace|\.bin|\.ico|\.jpg|\.gif|\.pdf|\.ico|\.png|\.tgz|\.doc|" + "\.xls|\.ppt|\.dmg|\.img|\.sit|\.scc|\.dll|\.lib|\.exp|\.so|\.frm|" + "\.myd|\.myi|\.sys|\.pyd|\.pyc|\.pyo|\.dat|\.cache|\.swf)$", "i"); 

Although, in my opinion, anyone caught publishing .ppt (PowerPoint) files on the Web should be shot.

     < Day Day Up > 


    Greasemonkey Hacks
    Greasemonkey Hacks: Tips & Tools for Remixing the Web with Firefox
    ISBN: 0596101651
    EAN: 2147483647
    Year: 2005
    Pages: 168
    Authors: Mark Pilgrim

    flylib.com © 2008-2017.
    If you may any questions please contact us: flylib@qtcs.net