Я сохраняю некоторые дочерние узлы как Base64. Это облегчает передачу группы элементов (узлов), в конечном итоге сохраняя строку base64 в базе данных и, возможно, считывая ее обратно в исходные элементы (узлы) HTML
Я использую atob()
и btoa()
https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
Я не могу повторно использовать этот base64, так как не знаю как. Я знаю, как преобразовать его обратно в HTML.
В моем приложении, когда пользователь сохраняет (нажимает кнопку), он сохраняет элемент HTML (и дочерние элементы), используя btoa
, и я получаю «забавную» строку.
Теперь мне нужно перезагрузить это из строки в нечто, понятное HTML, чтобы отобразить его в графическом интерфейсе.
Я использую atob(myString)
и получаю HTMLDivElement
Я не знаю, как это использовать. Это означает, что следующее не удается
Мои усилия (и это, вероятно, не будет работать в IE, что хорошо)
const wrapperEle = document.getElementById("wrapper");
const destinationEle = document.getElementById("destination");
const btn = document.getElementById("button");
btn.addEventListener("click", performLogic);
function performLogic() {
destinationEle.innerHTML = null;
const myString = btoa(wrapperEle); //encode
const data = atob(myString); //decode
try {
const node = document.createElement(data);
destination.appendChild(node);
} catch (e){
alert("Failed on first effort");
}
try {
destination.append(data); //appends [object HTMLDivElement]
alert("second attempt complete");
} catch (e){
alert("Failed on second effort");
}
try {
destination = data; //appends [object HTMLDivELement]
alert("third attempt complete but nothing shows");
} catch (e){
alert("Failed on third effort");
}
try {
destination.append(myString); //appends [object HTMLDivELement]
alert("fourth attempt complete but nothing shows");
} catch (e){
alert("Failed on fourth effort");
}
}
<div id="wrapper">
<table>
<tr>
<td>data 01</td>
<td>data 02</td>
</tr>
</table>
</div>
<input type="button" id="button" value="Click" />
<div id="destination">
I want and expect this line of text to be replaced with the table content above after you click on the button
</div>
Как мне пересчитать значение, которое было закодировано и декодировано? В идеале, без JQuery или каких-либо рамок, просто Javascript
Я также добавил JS, но он не будет работать в IE (что нормально).
https://jsfiddle.net/uLb8okrs/2/