del.icio.us autodiscovery bookmarklet

This is a JavaScript bookmarklet to display a link to a user's del.icio.us bookmarks using the autodiscovery technique developed for syndication feeds.


   <link rel   = "alternate"
         type  = "text/html"
         title = "delicious links"
         href  = "http://del.icio.us/straup" />
  

Drag this link to your bookmarks tab — or click to see it in action. If a webpage contains a <link> element whose type attribute is text/html and whose title attribute is delicious links then the bookmarklet will draw a new block element containing a link to the value of the href attribute.


   var res = null;

   var ok_title = new RegExp("^del\.?icio\.?us links");
   var ok_type  = "text/html";

   var content_txt = "This person's del.icio.us links can be seen at ";

   // set up a wrapper element (res) because the magic
   // DOM-CSS stuff doesn't seem to do the right thing
   // with margins

   var res_css     = "padding-bottom:15px;";
   var content_css = "margin-bottom:10px;border:1px solid #ccc; padding:5px;background-color:beige;";

   var doc  = document;
   var list = doc.getElementsByTagName("link");

   for (var i = 0; i < list.length; i++) {
       var link = list[i];

       if ((link.type == ok_type) && (ok_title.test(link.title))) {
		       
           var regexp_del = new RegExp("^(http:\/\/del\.icio\.us)\/(.*)$");
           var url_rss    = link.href.replace(regexp_del,"$1/rss/$2");
		       
           var html = doc.createElement("a");
           html.setAttribute("href",link.href);

           html.appendChild(doc.createTextNode(link.href));

           var rss = doc.createElement("a");
           rss.setAttribute("href",url_rss);

           res = doc.createElement("div");
           res.setAttribute("style","padding-bottom:15px");

           content = doc.createElement("div");
           content.setAttribute("style",content_css);

           content.appendChild(doc.createTextNode("rss"));
           content.appendChild(doc.createTextNode(res_txt));
           content.appendChild(html);
           content.appendChild(doc.createTextNode(" ("));
           content.appendChild(rss);
           content.appendChild(doc.createTextNode(")"));
		
           res.appendChild(content);
           break;		       
       }
   }

   if (res) {
       void(doc.body.insertBefore(res,doc.body.firstChild));
   }

   else {
       alert("no del.icio.us links");
   }		       
  
aaron straup cope