假設我有一串HTML代碼。我想使用JQuery從字符串中刪除所有<script>
標籤。如何使用JQuery刪除HTML字符串中的所有「腳本」標記?
我該怎麼做?
注意:我想使用JQuery而不是REGEX來執行此操作。
這是行不通的? $(var).find('script').remove();
假設我有一串HTML代碼。我想使用JQuery從字符串中刪除所有<script>
標籤。如何使用JQuery刪除HTML字符串中的所有「腳本」標記?
我該怎麼做?
注意:我想使用JQuery而不是REGEX來執行此操作。
這是行不通的? $(var).find('script').remove();
這應該爲你工作:
var stringOfHtml = // your string here
$(stringOfHtml).find('script').remove();
要獲得腳本標記的新字符串中刪除:
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 - 只好用P的,而不是腳本作爲腳本打破了小提琴,但同樣的原則。
實際工作答案在這裏(希望)
這裏是腳本問題的解決方法,使用替代交換與別的腳本文本(試圖使它唯一的),然後刪除這些新的標籤和使用在文本中的任何其他地方使用腳本時,請再次替換以備用。是的,它使用正則表達式,但不刪除腳本標籤所以我希望這是正常的):
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'));
我想這應該工作
$('script').each(function() {
$(this).remove();
});
老問題,但如果您仍然在尋找從字符串中刪除腳本的最簡單方法,請嘗試
$.parseHTML(string);
$ .parseHTML()會自動從字符串中刪除腳本標記。
編輯:
這工作,因爲keepScripts
有假值作爲默認值。 (參考:$.parseHtml)
$.parseHTML(data, context, keepScripts)
你如何得到結果字符串? – nnnnnn 2011-12-14 11:20:25
我想SO問題是腳本在執行時解析它,`.remove()`是無用的。 [見這個例子](http://jsfiddle.net/tWenG/1/)。 – 2011-12-14 11:24:26
@DavidRodrigues看起來你是對的。猜猜這不能在腳本上工作,但應該在任何其他標籤上工作。 – 2011-12-14 11:33:14