假设我有一个带有 div 的页面,它可能有也可能没有(无法控制内容)有 base64 编码的内容。我有一个按钮,单击该按钮将获取 div 的内容,解码 base64,然后用解码的内容替换相同的 div。
我知道 innerHTML 可以获取任何元素的内容。
我知道btoa()并且atob()可以解码base64,并且网上有足够的功能可以为IE做。
但是我不知道如何将两者结合起来,然后用解码结果替换同一个 div 的内容。做上述事情的最佳方法是什么?Jquery 可用,其他框架不可用。
假设我有一个带有 div 的页面,它可能有也可能没有(无法控制内容)有 base64 编码的内容。我有一个按钮,单击该按钮将获取 div 的内容,解码 base64,然后用解码的内容替换相同的 div。
我知道 innerHTML 可以获取任何元素的内容。
我知道btoa()并且atob()可以解码base64,并且网上有足够的功能可以为IE做。
但是我不知道如何将两者结合起来,然后用解码结果替换同一个 div 的内容。做上述事情的最佳方法是什么?Jquery 可用,其他框架不可用。
你可以像这样使用jquery.html()方法
<div class="encoded">SGVsbG8gV29ybGQ=</div>
和
$('.encoded').html(function(i,current){
return atob(current); //return the decoded string
});
假设您要定位的 divencoded应用了一个类..(该类只是定位元素的示例)
function encode64(input) {
input = escape(input);
var output = "";
var chr1, chr2, chr3 = "";
var enc1, enc2, enc3, enc4 = "";
var i = 0;
do {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output +
keyStr.charAt(enc1) +
keyStr.charAt(enc2) +
keyStr.charAt(enc3) +
keyStr.charAt(enc4);
chr1 = chr2 = chr3 = "";
enc1 = enc2 = enc3 = enc4 = "";
} while (i < input.length);
return output;
}
function decode64(input) {
var output = "";
var chr1, chr2, chr3 = "";
var enc1, enc2, enc3, enc4 = "";
var i = 0;
// remove all characters that are not A-Z, a-z, 0-9, +, /, or =
var base64test = /[^A-Za-z0-9\+\/\=]/g;
if (base64test.exec(input)) {
alert("There were invalid base64 characters in the input text.\n" +
"Valid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\n" +
"Expect errors in decoding.");
}
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
do {
enc1 = keyStr.indexOf(input.charAt(i++));
enc2 = keyStr.indexOf(input.charAt(i++));
enc3 = keyStr.indexOf(input.charAt(i++));
enc4 = keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
chr1 = chr2 = chr3 = "";
enc1 = enc2 = enc3 = enc4 = "";
} while (i < input.length);
return unescape(output);
}