Base64 デコード
by
pacochi
2017-04-14 [2017/04/14 16:27:47]
選択部分を Base64 のエンコード済み文字列とみなしてデコードします。時々化けます。
@@ -1,9 +1,9 @@
/*
* @title Base64 デコード
- * @description 選択部分を Base64 のエンコード済み文字列とみなしてデコードします。文字コード変換はしてないので時々化けます。
+ * @description 選択部分を Base64 のエンコード済み文字列とみなしてデコードします。時々化けます。
* @include http://*
* @require http://coderepos.org/share/export/38677/lang/javascript/Base64/trunk/base64.js
- * @private
+ * @require https://gist.github.com/84db66f331610768a50f.txt
*/
(function () {
@@ -14,25 +14,28 @@
r = d.selection.createRange();
s = r.text;
- p = r.parentElement();
+ p = r.parentElement()
} else {
r = window.getSelection();
s = String(r);
p = r.anchorNode;
- if (p.nodeName == "#text") p = p.parentNode;
+ if (p.nodeType == 3) p = p.parentNode
}
-s = s.replace(/^[^a-zA-Z0-9=\+\/\s\r\n]+/, "").split(/[^a-zA-Z0-9=\+\/\s\r\n]/)[0].replace(/[\s\r\n]/g, "");
+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 = Base64.decode(s).replace(/\r\n|[\r\n]/g, "<br />");
+ c.innerHTML = s.replace(/\r\n|[\r\n]/g, "<br />");
c.style.cssText = "display:block;margin:1em;";
- p.appendChild(c);
+ p.appendChild(c)
}
/*
* @title Base64 デコード
* @description 選択部分を Base64 のエンコード済み文字列とみなしてデコードします。時々化けます。
* @include http://*
* @require http://coderepos.org/share/export/38677/lang/javascript/Base64/trunk/base64.js
* @require https://gist.github.com/84db66f331610768a50f.txt
*/
(function () {
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)
}
})();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。