Questa potrebbe sembrare una richiesta strana, ed è abbastanza fuori dal comune, ma è una sfida che sto cercando di risolvere.JavaScript: come serializzare un elemento DOM come una stringa da utilizzare in seguito?
Supponiamo di avere un elemento DOM composto da HTML e alcuni CSS applicati e alcuni listener di eventi JS. Vorrei clonare questo elemento (e tutti i CSS e JS applicati), serializzarlo come una stringa che potrei salvare in un database da aggiungere al DOM in una richiesta futura.
So che jQuery ha alcuni di questi metodi (come $ .css() per ottenere gli stili calcolati), ma come posso fare tutte queste cose e trasformarle in una stringa che posso salvare in un database?
Aggiornamento: Ecco un elemento di esempio:
<div id="test_div" class="some_class">
<p>With some content</p>
</div>
<style>
#test_div { width: 200px }
.some_class { background-color: #ccc }
</style>
<script>
$('#test_div').click(function(){
$(this).css('background-color','#0f0');
});
</script>
... e forse una serializzazione di esempio:
var elementString = $('#test_div').serializeThisElement();
che si tradurrebbe in una stringa che sembra qualcosa di simile:
<div id="test_div"
class="some_class"
style="width:200px; background-color:#ccc"
onclick="javascript:this.style.backgroundColor='#0f0'">
<p>With some content</p>
</div>
così ho potuto inviarlo come richiesta AJAX:
$.post('/save-this-element', { element: elementString } //...
Quanto sopra è solo un esempio. Sarebbe l'ideale se la serializzazione potesse sembrare molto simile all'esempio originale, ma se tutto fosse uguale all'originale, mi andrebbe bene.
stiamo parlando di un singolo elemento? O una struttura DOM annidata di dimensioni arbitrarie? – nrabinowitz
Puoi fornire una stringa di output di esempio che ti aspetteresti? –
La memorizzazione dei riferimenti ai callback degli eventi non sarà affidabile. –