2012-03-05 9 views
5

मेरे पास jquery और एम्बेडेड टेम्पलेट्स का एक सेट का उपयोग कर एक एकल पृष्ठ वेब एप्लिकेशन है। एक टेम्पलेट नीचे की तरह टैग हो सकते हैं:Jquery; सही ढंग से एक स्क्रिप्ट टैग की सामग्री का चयन

<script type="html/template" id="sample"> 

<script type="text/javascript" charset="utf-8">alert('x');</script> 


</script> 

और एक jQuery कोड टेम्पलेट पुनर्प्राप्त करने के लिए

$("#sample").html(); 

ऊपर jQuery आदेश के उत्पादन में

<script type="text/javascript" charset="utf-8">alert('x'); 

के बजाय

है
<script type="text/javascript" charset="utf-8">alert('x');</script> 

मैं इसे कैसे ठीक कर सकता हूं उत्पादन?

+0

आप ब्राउज़र में अपने कोड देखते हैं, तो यह एम्बेडेड समापन स्क्रिप्ट टैग को हटा देगा। –

+0

आप अंत में "" जोड़ सकते हैं नोट करें कि ऐसा इसलिए होता है क्योंकि ब्राउज़र इस प्रकार की स्क्रिप्ट का समर्थन नहीं करता है –

उत्तर

1

सब कुछ एक <script> अंदर स्क्रिप्ट, नहीं एचटीएमएल होने की उम्मीद है।

ब्राउज़र देखता है:

<script type="html/template" id="sample">

और, सब कुछ है कि बाद में स्क्रिप्ट के रूप में प्रकट होता है की व्याख्या जब यह आंतरिक <script इसकी देखा पाठ के रूप में बस जा रहा है तक पहुँच जाता है शुरू होता है।

इसका अपवाद </script> जो ब्राउज़र आदेश स्क्रिप्ट से HTML के लिए संदर्भों स्विच करने के लिए में की तलाश में है, इसलिए जब वह देखता है 1 </script> में है:

<script type="text/javascript" charset="utf-8">alert('x');</script>

यह उद्घाटन स्क्रिप्ट ब्लॉक हो जाती है

<script type="text/javascript" charset="utf-8">alert('x');

: है पूरा & एचटीएमएल उम्मीद, सही ढंग से करने के लिए बाहरी स्क्रिप्ट नोड के सामग्री की स्थापना करने के लिए वापस स्विच

आप या तो सर्वर पर क्या करने की कोशिश कर रहे हैं और वहां पार्सिंग कर सकते हैं, या टेम्पलेटिंग के लिए एक अलग दृष्टिकोण का उपयोग कर सकते हैं।

0

ऐसा इसलिए है क्योंकि ब्राउज़र HTML/टेम्पलेट माइम-प्रकार का समर्थन नहीं करते हैं और यह नहीं जानते कि इसके साथ कैसे काम करना है। आप केवल स्क्रिप्ट-टैग के अंदर स्ट्रिंग से बचकर इसे ठीक कर सकते हैं।

2

मुझे यकीन नहीं है कि यह आपकी मदद करेगा।

var a = $("#sample").html() +'</'+'script>'; 

alert(a);​ 

बेला लिंक: http://jsfiddle.net/Sg5W8/

0

क्या

के बारे में
var c = $("#sample script").html(); 
var type = $("#sample script").attr("type"); 
var chset = $("#sample script").attr("utf-8"); 

var ouptut = '<script type="'+ type +'" charset="'+ charset +'">' + c + '</script>' 
1

नेस्टेड script टैग HTML में अनुमति नहीं है, और यदि आप validator के माध्यम से एक नेस्टेड स्क्रिप्ट चलाने आप एक Stray end tag script त्रुटि प्राप्त होगी।

आपको स्क्रिप्ट टैग से बचने, या टेम्पलेट सिंटैक्स के लिए धारक तत्व के रूप में कुछ और उपयोग करने की आवश्यकता है।

0

मैं सुझाव दूंगा कि यदि संभव हो तो स्क्रिप्ट को बाहर ले जाएं। मैंने 2 विकल्प की कोशिश की। पहला एचटीएमएल एन्कोड के साथ है और दूसरा कस्टम स्क्रिप्ट तत्व है।

1. एचटीएमएल एनकोड

http://jsfiddle.net/Ae48z/

<script type="html/template" id="sample"> 

    &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;alert(&#39;x&#39;); &lt;/script&gt; 

js

var out = $("#sample").html(this); 
    console.log(out); 

2.script की जगह

http://jsfiddle.net/2G7gj/

<script type="html/template" id="sample"> 
    <xscript type="text/javascript" charset="utf-8">alert('x');</xscript> 

</script> 

var out = $('#sample').html().replace(/xscript/g,'script'); 
console.log(out) 

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