unzipLinker

By javascripter Last update Jun 22, 2008 — Installed 72 times.
// ==UserScript==
// @name           unzipLinker
// @namespace      http://d.hatena.ne.jp/javascripter/
// @include        http://twitter.com/*
// ==/UserScript==
(function() {
  const REPLACE_CONTENT = true;
  const URL_LIST = [
  /^http:\/\/tinyurl\.com\//,
  /^http:\/\/(?:.*?\.)?zz\.tc\/.+/
  ];

  var requested = {};
  document.addEventListener('mouseover',
  function(e) {
    var elem = e.target;
    if (elem.hasAttribute('href')) {
      if (elem.href in requested) {
        setUrl(elem, requested[elem.href])
      } else {
        if (!URL_LIST.some(function(re) re.test(elem.href))) return;
        requested[elem.href] = null;
        GM_xmlhttpRequest({
          method: 'get',
          url: elem.href,
          onload: function({
            finalUrl: url
          }) {
            setUrl(elem, url);
            requested[elem.href] = url;
          },
          onerror: function() {
            delete requested[elem.href];
          }
        });
      }
    }
  },
  false);
  function setUrl(elem, url) {
    elem.href = url;

    if (REPLACE_CONTENT) {
      elem.textContent = url;
    } else {
      elem.title = url;
    }
  }

})();