2011-12-14 5 views
9

मान लीजिए कि मेरे पास HTML कोड की एक स्ट्रिंग है। मैं स्ट्रिंग से सभी <script> टैग हटाने के लिए JQuery का उपयोग करना चाहता हूं।HTML की स्ट्रिंग में सभी "स्क्रिप्ट" टैग को निकालने के लिए मैं JQuery का उपयोग कैसे करूं?

मैं यह कैसे कर सकता हूं?

नोट: मैं ऐसा करने के लिए, JQuery, REGEX का उपयोग नहीं करना चाहता हूं।

क्या यह काम करता है? $(var).find('script').remove();

उत्तर

12

यह आप के लिए काम करना चाहिए:

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 - स्क्रिप्ट के बजाय पी उपयोग करने के लिए के रूप में स्क्रिप्ट बेला तोड़ दिया था हालांकि, वही सिद्धांत।

वास्तविक काम कर जवाब यहाँ (उम्मीद)

यहाँ स्क्रिप्ट जारी करने के लिए एक समाधान नहीं है, कुछ और के साथ स्क्रिप्ट पाठ स्वैप करने के लिए की जगह का उपयोग करें (कोशिश करते हैं और उसे अद्वितीय बनाएं) तो उन नए टैग और उपयोग को दूर पाठ में कहीं भी स्क्रिप्ट का उपयोग करने के मामले में वापस स्वैप करने के लिए प्रतिस्थापित करें। हाँ, यह regex का उपयोग करता है, लेकिन स्क्रिप्ट टैग हटाने के लिए नहीं तो मैं आशा करती हूं कि कि बात नहीं;):

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

+0

परिणामस्वरूप स्ट्रिंग कैसे प्राप्त करते हैं? – nnnnnn

+0

मुझे लगता है कि एसओ समस्या यह है कि स्क्रिप्ट इसे पार्स पर निष्पादित की जाती है, और '.remove()' अनुपयोगी है। [यह उदाहरण देखें] (http://jsfiddle.net/tWenG/1/)। –

+0

@ डेविड रोड्रिग्स लगता है कि आप सही हैं। मान लीजिए यह स्क्रिप्ट पर काम नहीं कर सकता है लेकिन किसी अन्य टैग पर काम करना चाहिए। –

2

मैं लगता है कि यह काम करना चाहिए

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

यह '$ ('स्क्रिप्ट') के बराबर है। हटाएं()' –

5

पुराना सवाल, लेकिन यदि आप अभी भी स्ट्रिंग से स्क्रिप्ट को हटाने का सबसे आसान तरीका ढूंढ रहे हैं तो

$.parseHTML(string); 

$ .parseHTML() स्वचालित रूप से तारों से स्क्रिप्ट टैग हटा देता है।

संपादित करें:

यह काम करता है क्योंकि keepScripts डिफ़ॉल्ट के रूप में झूठी मान है। (संदर्भ: $.parseHtml)

$.parseHTML(data, context, keepScripts) 
+0

बहुत अच्छा काम करता है, लेकिन मैं HTML को वापस स्ट्रिंग में कैसे जोड़ूं? 'parseHTML()' डीओएम तत्वों की एक सरणी देता है जो स्क्रिप्ट टैग को बाहर करता है, लेकिन मैं उन्हें दस्तावेज़ में वापस डालने के बिना शामिल होना चाहता हूं। मैं $() जोड़ने() या जोड़ने() जोड़ने से बचने की कोशिश कर रहा हूं – ojosilva

संबंधित मुद्दे

 संबंधित मुद्दे