Questo dovrebbe funzionare per voi:
var stringOfHtml = // your string here
$(stringOfHtml).find('script').remove();
Per ottenere la nuova stringa con i tag di script rimosso:
var stringOfHtml = "<div><script></script><span></span></div>";
var html = $(stringOfHtml);
html.find('script').remove();
var stringWithoutScripts = html.wrap("<div>").parent().html(); // have to wrap for html to get the outer element
JS Fiddle Example - dovuto usare p invece di script come lo script ha rotto il violino , lo stesso principio però.
risposta di lavoro effettivo qui (si spera)
Ecco una soluzione per il problema di script, utilizzare sostituzione di scambiare il testo dello script con qualcos'altro (cercare di renderlo unico) quindi rimuovere quei nuovi tag e l'uso sostituisci di nuovo per scambiare di nuovo nel caso in cui lo script venga utilizzato in qualsiasi altro punto del testo. Sì, si fa uso di espressioni regolari, ma non rimuovere i tag di script quindi spero che va bene;):
var stringOfHtml = "<p></p><script>alert('fail');</scr" + "ipt><span></span>";
var wrappedString = '<div>' + stringOfHtml + '</div>';
var noScript = wrappedString.replace(/script/g, "THISISNOTASCRIPTREALLY");
var html = $(noScript);
html.find('THISISNOTASCRIPTREALLY').remove();
alert(html.html().replace(/THISISNOTASCRIPTREALLY/g, 'script'));
JS Fiddle Workaround
JS Fiddle Example With Script Text
fonte
2011-12-14 11:17:25
Come si ottiene la stringa risultante? – nnnnnn
Immagino che il problema dell'OS sia che lo script venga eseguito analizzandolo, e '.remove()' non è utile. [Vedi questo esempio] (http://jsfiddle.net/tWenG/1/). –
@DavidRodrigues Sembra che tu abbia ragione. Indovina che questo non può funzionare sugli script ma dovrebbe funzionare su qualsiasi altro tag. –