URNs were devised to allow references such as links to be made to an item without the author needing to commit to where that reference was located on the web. It would be up to the user agent to figure out how it should be interpreted. The extension URN Support (mentioned below) offered this ability, but it could only work within the "href" attribute, thus preventing such links from doing anything else if the user's browser did not have the extension installed.
Beyond URNs, Firefox allows extensions to define their own protocols and HTML5 is currently working on allowing custom protocols for which websites can define their own handlers. As with URNs, the only problem with people experimenting with these is that there is no fallback behavior (or alternative options) so that for browsers which do not support these (or if the user has not chosen any particular handlers), site authors of course generally do not want a click to be clicked and just do nothing.
This extension aims to solve that problem by allowing two additional attributes in HTML links. Using the attribute "uris" will try these space-separated protocols (in order), and only if none of these succeed, will it fall back to the "href" value. Alternatively, or in addition, the attribute "alternateURIs" may be used to indicate a white-space separated list of URIs which can be activated by right-click (and selecting the "Open as..." context menu).
The extension allows one to automatically style such elements so that one may be aware such behavior will be possible by right-clicking.
Note that although these attributes are not part of any standard, this extension was started at the recommendation of members of the WhatWG HTML5 mailing list in order to gain enough experience with web developers to see how such a standard might be shaped. Feedback is welcome: http://blog.brett-zamir.me/?p=150 .
For experimental purposes, this extension also supports the proprietary "urn" attribute added by Microsoft in Internet Explorer ( http://msdn.microsoft.com/en-us/library/ms534710(VS.85).aspx ) but which has no specified (nor standard) behavior. While convenient for URNs, this extension author feels that a dedicated "uris" attribute (as the extension also supports) would be more complete in being able to handle both URNs and other protocols, though he aims to support whatever the standardization process comes up with.
You can test some of these combinations of links at http://brett-zamir.me/tests/open_uris.html (one of the protocols is for my other extension, https://addons.mozilla.org/en-US/firefox/addon/5235 which must be installed (or if any other extension implements my custom "x-unicode" protocol) in order for those items to open.
This extension uses much of the code from the open source extension, URN Support ( https://addons.mozilla.org/en-US/firefox/addon/1940 ) to take care of URN handling, but for URNs to work properly, this extension cannot be used together with that extension. Since this extension incorporates all of its functionality and adds to it (e.g., allowing a custom function for URN handling)), you may wish to uninstall or disable URN Support.