ten powinien pracować dla Ciebie:
var stringOfHtml = // your string here
$(stringOfHtml).find('script').remove();
Aby uzyskać nowy łańcuch z tagami skryptu usunięte:
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 - musiałem użyć p zamiast skrypt jako skrypt złamał skrzypce , jednak ta sama zasada.
Rzeczywista odpowiedź roboczą tutaj (mam nadzieję)
Oto obejście problemu skryptu, należy wymienić, aby zamienić tekst skryptu z czegoś innego (spróbuj i uczynić go wyjątkowym), a następnie usunąć te nowe znaczniki i wykorzystanie zamień ponownie, aby zamienić z powrotem w przypadku użycia skryptu gdziekolwiek indziej w tekście. Tak, to nie użyć wyrażenia regularnego, ale nie usunąć tagi skryptów więc mam nadzieję, że to w porządku;):
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
Jak uzyskać wynikowy ciąg znaków? – nnnnnn
Domyślam się, że problem SO polega na tym, że skrypt jest wykonywany podczas jego analizy, a '.remove()' jest niepotrzebne. [Zobacz ten przykład] (http://jsfiddle.net/tWenG/1/). –
@DavidRodrigues Wydaje się, że masz rację. Domyślam się, że to nie działa na skryptach, ale powinno działać na każdym innym tagu. –