này nên làm việc cho bạn:
var stringOfHtml = // your string here
$(stringOfHtml).find('script').remove();
Để có được chuỗi mới với các thẻ script loại bỏ:
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 - Đã sử dụng p thay vì kịch bản như kịch bản đã phá vỡ fiddle , cùng một nguyên tắc.
câu trả lời làm việc thực tế ở đây (hy vọng)
Đây là một cách giải quyết cho vấn đề kịch bản, sử dụng thay thế để trao đổi các văn bản kịch bản với cái gì khác (thử và làm cho nó duy nhất) sau đó loại bỏ những thẻ mới và sử dụng thay thế một lần nữa để hoán đổi lại trong trường hợp kịch bản được sử dụng bất cứ nơi nào khác trong văn bản. Vâng, nó sử dụng regex, nhưng không phải để loại bỏ các thẻ script vì vậy tôi hy vọng rằng sẽ ổn thôi;):
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
Nguồn
2011-12-14 11:17:25
Làm thế nào để bạn nhận được chuỗi kết quả? – nnnnnn
Tôi đoán rằng vấn đề SO là kịch bản được thực hiện trên phân tích cú pháp nó, và '.remove()' là unuseful. [Xem ví dụ này] (http://jsfiddle.net/tWenG/1/). –
@DavidRodrigues Có vẻ như bạn đã đúng. Đoán điều này không thể hoạt động trên các tập lệnh nhưng phải hoạt động trên bất kỳ thẻ nào khác. –