IMGSCAN.JS + :hover

  • /*
     * @title IMGSCAN.JS + :hover
     * @description 画像へのリンクにサムネイルを付加・マウスを載せると原寸で表示
     * @include 
     * @license 
     * @require 
     */
    
    /*
     *  IMGSCAN.JS - Copyright (C) 2011.6.20 AOK.
     *  http://homepage3.nifty.com/aokura/jscript/imgscan.html
     */
    (function() {
      var b = /ime\.st\/|ime\.nu\/|pinktower\.com\/\?*|http:\/\/nun\.nu\/\?/g;
      var c = /.+\.(?:gif|jpg|png|jpeg|bmp)$/i;
      var d = /(^|[^a-z])(h?t)?(tps?:\/\/[!#-;=?-Z_a-z~]+)/gm;
      var x = /\x1f(https?:\/\/[!#-;=?-Z_a-z~]+)/gm;
    
      // add styles @asiamoth
      var styles = document.createElement('style');
      styles.type = 'text/css';
      styles.innerHTML = [ '.imgscan:hover{',
      'position: absolute !important;',
      'width: auto !important;',
      'height: auto !important; }'].join('');
      document.getElementsByTagName("head")[0].appendChild(styles);
    
      var urlscan = function(n) {
        if ((!n.parentNode || n.parentNode.tagName != 'A') && n.nodeType == 3) {
          n.nodeValue = n.nodeValue.replace(d, '$1\x1fht$3');
        }
        for (var i = 0; i < n.childNodes.length; i++) {
          urlscan(n.childNodes[i]);
        }
      };
    
      var imgscan = function(w) {
        var a = w.document.getElementsByTagName('A');
        for (var i = 0; i < a.length; i++) {
          if (c.test(a[i].href)) {
            var e = a[i].href.replace(b, '');
            a[i].href = e;
            a[i].target = '_blank';
            // add class @asiamoth
            a[i].innerHTML = '<img class="imgscan" src="' + e + '" width="75" height="75" />';
          }
        }
      };
    
      var framescan = function(w) {
        if (w.document) {
          var e = w.document.body;
          urlscan(e);
          e.innerHTML = e.innerHTML.replace(x,'<a href="$1" target="_blank">$1</a>');
          imgscan(w);
        }
        var f = w.frames;
        if (f) {
          for (var i = 0; i < f.length; i++) {
            try { framescan(f[i]); } catch(e) {}
          }
        }
      };
    
      framescan(window);
    
    })();
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2011/12/13 18:52:11 - 2011-12-13