Comment puis-je utiliser JQuery pour supprimer toutes les balises "script" dans une chaîne de HTML?

Supposons que j'ai une chaîne de code HTML. Je souhaite utiliser JQuery pour supprimer toutes les balises <script> de la chaîne.

Comment puis je faire ça?

Remarque: Je souhaite utiliser JQuery, pas REGEX, pour ce faire.

Est-ce que ça marche? $(var).find('script').remove();

Cela devrait fonctionner pour vous:

 var stringOfHtml = // your string here $(stringOfHtml).find('script').remove(); 

Pour obtenir la nouvelle chaîne avec les balises de script supprimées:

 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 Exemple – A dû utiliser p au lieu de script comme script a cassé le violon, même principe cependant.

Réponse de travail réelle ici (espérons-le)

Voici une solution de rechange pour le problème du script, utilisez le remplacement pour échanger le texte du script avec autre chose (essayez de le rendre unique), puis supprimez ces nouvelles étiquettes et utilisez le remplacement à nouveau pour échanger dans le cas où le script est utilisé ailleurs dans le texte. Oui, il utilise regex, mais pas pour supprimer les étiquettes de script, donc j'espère que ça va bien;):

 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 Solution de contournement

JS Fiddle Exemple avec Script Text

Ancienne question, mais si vous recherchez toujours le moyen le plus simple de supprimer les scripts d'une chaîne, essayez

 $.parseHTML(string); 

$ .parseHTML () supprime automatiquement les balises de script des chaînes.

Modifier:

Cela fonctionne car keepScripts a une fausse valeur par défaut. (Référence: $ .parseHtml )

 $.parseHTML(data, context, keepScripts) 

Je suppose que cela devrait fonctionner

 $('script').each(function () { $(this).remove(); });