Base64 デコード

    @@ -1,42 +1,34 @@ /* * @title Base64 デコード * @description 選択部分を Base64 のエンコード済み文字列とみなしてデコードします。時々化けます。 - * @include http://* - * @require http://coderepos.org/share/export/38677/lang/javascript/Base64/trunk/base64.js - * @require https://raw.github.com/gist/84db66f331610768a50f/b3a93db333aa20dff8bd16a34d523e5c286106d5/ecl_p.js + * @include * + * @javascript_url */ -(function () { +((r = window.getSelection(), s = String(r), p = r.anchorNode, d, c) => { -var s, r, p, c, d = document; - -if (d.selection) { - - r = d.selection.createRange(); - s = r.text; - p = r.parentElement() - -} else { - - r = window.getSelection(); - s = String(r); - p = r.anchorNode; - if (p.nodeType == 3) p = p.parentNode - -} - -s = s.replace(/^[^a-zA-Z0-9=\+\/]+/, "").split(/[^a-zA-Z0-9=\+\/\s\r\n]/)[0].replace(/[\s\r\n]/g, ""); - -if (p && s) { - - s = escape(Base64.fromBase64(s)).replace(/[%0]+$/, ""); - s = ECL["Unescape"+ECL.GetEscapeCodeType(s)](s); - - c = d.createElement("span"); - c.innerHTML = s.replace(/\r\n|[\r\n]/g, "<br />"); - c.style.cssText = "display:block;margin:1em;"; - p.appendChild(c) - -} + if (p.nodeType == 3) p = p.parentNode; + s = s.replace(/^[^a-zA-Z0-9=\+\/]+/, '').split(/[^a-zA-Z0-9=\+\/\s\r\n]/)[0].replace(/[\s\r\n]/g, ''); + if (!p || !s) return; + + s = escape(window.atob(s)); + d = () => { + + // TextDecoder 使おうとしたけど文字コード自動判別の仕方分かんなかった + s = ECL[`Unescape${ECL.GetEscapeCodeType(s)}`](s); + p.appendChild(Object.assign(document.createElement('span'), { + textContent: s, + style: 'display: block; margin: 1em; white-space: pre-wrap;' + })); + + }; + + if (window.ECL) return d(); + + c = p.appendChild(document.createElement('script')); + c.addEventListener('load', d); + // http://www.junoe.jp/downloads/itoh/enc_js.shtml + // https://gist.github.com/pacochi/84db66f331610768a50f + c.src = 'https://cdn.rawgit.com/pacochi/84db66f331610768a50f/raw/167d9640b48aed4479a1396856fda5e1fe803a27/ecl_p.js'; })();
  • /*
     * @title Base64 デコード
     * @description 選択部分を Base64 のエンコード済み文字列とみなしてデコードします。時々化けます。
     * @include *
     * @javascript_url
     */
    
    ((r = window.getSelection(), s = String(r), p = r.anchorNode, d, c) => {
    
    	if (p.nodeType == 3) p = p.parentNode;
    	s = s.replace(/^[^a-zA-Z0-9=\+\/]+/, '').split(/[^a-zA-Z0-9=\+\/\s\r\n]/)[0].replace(/[\s\r\n]/g, '');
    	if (!p || !s) return;
    
    	s = escape(window.atob(s));
    	d = () => {
    
    		// TextDecoder 使おうとしたけど文字コード自動判別の仕方分かんなかった
    		s = ECL[`Unescape${ECL.GetEscapeCodeType(s)}`](s);
    		p.appendChild(Object.assign(document.createElement('span'), {
    		 textContent: s,
    		 style: 'display: block; margin: 1em; white-space: pre-wrap;'
    		}));			
    
    	};
    
    	if (window.ECL) return d();
    
    	c = p.appendChild(document.createElement('script'));
    	c.addEventListener('load', d);
    	// http://www.junoe.jp/downloads/itoh/enc_js.shtml
    	// https://gist.github.com/pacochi/84db66f331610768a50f
    	c.src = 'https://cdn.rawgit.com/pacochi/84db66f331610768a50f/raw/167d9640b48aed4479a1396856fda5e1fe803a27/ecl_p.js';
    
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2017/04/14 16:27:47 - 2017-04-14
  2. 2017/04/09 23:57:03 - 2017-04-09
  3. 2011/09/09 15:26:56 - 2011-09-09
  4. 2010/11/22 18:53:57 - 2010-11-22
  5. 2010/11/16 15:01:32 - 2010-11-16
  6. 2010/11/16 14:57:00 - 2010-11-16