ස්ක්‍රිප්ට් ටැගයක් තුළ CDATA අංශයක් අවශ්‍ය වන්නේ කවදාද?


915

CDATA තිර රචනය ටැග් හා විට එසේ නම් මෙතෙක් අවශ්ය ටැග?

වෙනත් වචන වලින් කිවහොත්, මෙය කවදාද සහ කොහේද:

<script type="text/javascript">
//<![CDATA[
...code...
//]]>
</script>

මීට වඩා සුදුසු:

<script type="text/javascript">
...code...
</script>

19
දැන් XHTML අත්‍යවශ්‍යයෙන්ම මියගොස් ඇති බැවින් මෙය තවදුරටත් අදාළ කාරණයක් නොවේද?
allyourcode

82
@allyourcode: XHTML මියගොස් ඇතැයි ඔබ සිතන්නේ කුමක් ද? HTML5? එය සමඟ දකුණට යාමට XHTML5 ඇත :)
ඩොක්ටර් ජේ

4
OkDoktorJ AFAIK xHTML 1 වන අනුවාදයේ විය. එය HTML සමාන 4 වන අනුවාදය විය. XHTML 2.0 හි කේන්ද්‍රගත වූ උත්සාහයක් විය. Xform, xlink, time සහ svg නාම අවකාශයන් පිරිවිතරයට තල්ලු කිරීමට අදහස් කරන ලදී. එකතු කිරීම - xform / input-validation, time / animations, svg / canvas - නමුත් xHTML 2 පිරිවිතර සඳහා උත්සාහයන් HTML 5 විශේෂාංග වෙත නැවත යොමු විය. XHTML 2 අතහැර දමා හෝ යල් පැන ගිය බවක් එයින් අදහස් නොකෙරේ, නමුත් නුදුරු අනාගතයේදී එය සැලසුම් කර නැත.
මිහයි ස්ටැන්කු

14
ජාවා සීම් / ජේඑස්එෆ් / ෆේස්ලට් සංවර්ධනයේදී XHTML මිය ගොස් නැත.
ජොජෝ

16
I මිහායි ස්ටැන්කු - එය සම්පූර්ණයෙන්ම නිවැරදි නොවේ. W3C ට අනුව HTML5 සඳහා XML සින්ටැක්ස් එකක් ඇත : "HTML5 සඳහා භාවිතා කළ හැකි අනෙක් සින්ටැක්ස් එක්ස්එම්එල් ය. මෙම සින්ටැක්ස් එක්ස්එච්එම්එල් 1 ලේඛන හා ක්‍රියාත්මක කිරීම් සමඟ අනුකූල වේ. XML පිරිවිතරයන් විසින් නියම කර ඇති නීතිරීති අනුගමනය කරමින් w3.org/1999/xhtml නාම අවකාශයට ඇතුළත් කිරීමට .
BrainSlugs83

Answers:


588

(ක XHTML පිටුව XML ලෙස අර්ථ විට උදා:) ඔබ XML ලෙස parse ඔබේ ලියවිල්ල අවශ්ය නම් ඒ CDATA කොටස අවශ්ය සහ ඔබ ප්රායෝගික ලිවීමට හැකි විය අවශ්ය i<10හා a && bවෙනුවට i&lt;10සහa &amp;&amp; b XHTML කියවූ චරිතය දත්ත ලෙස JavaScript කේතය විග්රහ කළ ඇත ලෙස, පෙරනිමියෙන් අක්‍ෂර දත්ත වලට ප්‍රතිවිරුද්ධව. මෙම බාහිර ගොනු ගබඩා කර ඇති බව පිටපත් සමග ප්රශ්නයක් නැහැ, නමුත් XHTML ඕනෑම පේළිගත JavaScript ඔබට ඇත සමහර විට එය CDATA කොටස භාවිතා කිරීමට අවශ්ය.

බොහෝ XHTML පිටු කිසි විටෙකත් XML ලෙස විග්‍රහ කිරීමට අදහස් නොකළ බව සලකන්න, මෙය ගැටළුවක් නොවනු ඇත.

මෙම විෂය පිළිබඳ හොඳ ලිවීමක් සඳහා, https://web.archive.org/web/20140304083226/http://javascript.about.com/library/blxhtml.htm බලන්න


50
"වලංගුකරණය" ට වඩා වැඩි යමක් එයට තිබේ. බොහෝ දැඩි XML විග්‍රහ කරන්නන් නීති විරෝධී චරිතයකට පහර දුන්නොත් පිටුව හරහා නොයනු ඇත. එය හුදෙක් W3C සතුටු කිරීමට සහ රතු වෙනුවට කොළ පැහැයට හැරීමට වඩා වැඩි ය.
ලොරන් සේගල්

42
ඔබ මඟ හැර චරිත &සහ නම් <, ඔබට CDATA අංශයක් අවශ්‍ය නොවේ; එය HTML සහ XHTML යන දෙඅංශයෙන්ම හොඳින් ක්‍රියාත්මක වේ. සැලකිය යුතු කේත සියල්ලම බාහිර ස්ක්‍රිප්ට් තුළට දමා ඉන්ලයින් ස්ක්‍රිප්ට් භාවිතා කිරීමෙන් ඔබට පහසුවෙන් මෙය සාක්ෂාත් කරගත හැකිය. ආරම්භක විචල්‍යයන් ( ඔබට අවශ්‍ය නම් වචනාර්ථයෙන් පැන යාම &/ <සිට \x26/ \x3Cදක්වා).
බොබින්ස්

23
HTML5 සම්බන්ධයෙන් කුමක් කිව හැකිද?
මැතිව් ඇට්ලි

5
At මැතිව් ඇට්ල් - මෙය හොඳ ප්‍රශ්නයකි. එයට අවශ්‍ය අවධානය ලැබෙන බව සහතික කිරීම සඳහා වෙනම ත්‍රෙඩ් එකකින් විමසීමට හොඳ ප්‍රශ්නයක් වන්න.
ඇලෙක්ස් කීස්මිත්

3
Ore ලොරන්: එවිට එය තවමත් වලංගු භාවය පිළිබඳ සම්පුර්ණයෙන්ම. පරිශීලක-නියෝජිතයෙකු අවලංගු XML ප්‍රතික්ෂේප කරන ප්‍රමාණය විකලාංග වේ.
කක්ෂයේ සැහැල්ලු ධාවන තරඟ

233

බ්‍රව්සර් සලකුණු කිරීම XML ලෙස සලකන විට:

<script>
<![CDATA[
    ...code...
]]>
</script>

බ්‍රව්සර් සලකුණු කිරීම HTML ලෙස සලකන විට:

<script>
    ...code...
</script>

බ්‍රව්සර් සලකුණු කිරීම HTML ලෙස සලකන විට සහ ඔබේ XHTML 1.0 සලකුණු කිරීම (උදාහරණයක් ලෙස) වලංගු කිරීමට ඔබට අවශ්‍යය.

<script>
//<![CDATA[
    ...code...
//]]>
</script>

13
කේත ආරක්ෂාව පිළිබඳ කාරණයක් සේම, ඔබේ සීඩීඒටීඒ අවහිර කිරීම් සමඟ වට කර ගැනීම වඩා හොඳය, /* ... */එසේ නොමැතිනම් රේඛා බිඳීම් ඉවත් කළහොත් කේතය කැඩී යනු ඇත
බ්‍රයන් එච්

පළමු කොටසේ "... XML ලෙස" "... අර්ථ නිරූපණය නොකළ පෙළ ලෙස" නොවිය යුතුද? දී stackoverflow.com/questions/2784183/what-does-cdata-in-xml-mean අපි දකින "... මේ නූල් දත්ත ඇතුළත් කළ හැකි XML සලකුණු ලෙස අර්ථ, නමුත් නොවිය යුතුය."
matt wilkie

attmattwilkie, “XML ලෙස” යන්නෙන් මා අදහස් කරන්නේ “බ්‍රවුසරය ඔවුන්ගේ XML පාර්සර් (HTML පාර්සර්ට වඩා වෙනස්ව) සලකුණු කිරීම විග්‍රහ කිරීම සඳහා භාවිතා කරන විට, ලේඛනය යවා ඇත්තේ XML මත පදනම් වූ මයිම් වර්ගයක් හෝ සලකුණු සහිත ගොනුව ඇති බැවිනි. XML මත පදනම් වූ ගොනු දිගුවක් ".
සෙවනැල්ල 2531

128

HTML

HTML විග්‍රහකයෙක් පිටපත අතර <script>සහ එහි සෑම දෙයක්ම සලකනු ඇත </script>. සමහර ක්‍රියාත්මක කිරීම් සඳහා නිවැරදි සංවෘත ටැගයක් අවශ්‍ය නොවේ; ඒවා ස්ක්‍රිප්ට් අර්ථ නිරූපණය " </" හි නතර කරයි , එය පිරිවිතරයන්ට අනුව නිවැරදි ය .

HTML5 හි යාවත්කාලීන කරන්න , සහ වර්තමාන බ්‍රව්සර් සමඟ, එය තවදුරටත් එසේ නොවේ.

එබැවින්, HTML හි මෙය කළ නොහැක :

<script>
var x = '</script>';
alert(x)
</script>

CDATAඅංශ සඳහා සියලු දී කිසිදු බලපෑමක් . ඔබ ලිවිය යුත්තේ එබැවිනි

var x = '<' + '/script>'; // or
var x = '<\/script>';

හෝ ඊට සමාන ය.

සේවය කරන ලද XHTML ගොනු සඳහාද මෙය අදාළ වේ text/html. (IE XML අන්තර්ගත වර්ග සඳහා සහය නොදක්වන බැවින් මෙය බොහෝ දුරට සත්‍ය වේ.)

XML

XML හි, විවිධ නීති අදාළ වේ. (අයිඊ නොවන) බ්‍රව්සර් භාවිතා කරන්නේ එක්ස්එම්එල් පාර්සර් ය.

XML විග්‍රහකය වෙත, scriptටැගයක් වෙනත් ටැගයකට වඩා හොඳ නැත. විශේෂයෙන්, ස්ක්‍රිප්ට් නෝඩයක පෙළ නොවන ළමා නෝඩ් අඩංගු විය හැකිය <. සහ &ලකුණක් අක්ෂර වස්තුවක් දක්වයි.

එබැවින්, XHTML හි මෙය කළ නොහැක :

<script>
if (a<b && c<d) {
    alert('Hooray');
}
</script>

මෙය වටා වැඩ කිරීම සඳහා, ඔබට සම්පූර්ණ පිටපත CDATAකොටසකින් ඔතා ගත හැකිය . මෙය විග්‍රහකයාට මෙසේ කියයි: 'මෙම කොටසේදී " <" සහ " &" පාලක අක්ෂර ලෙස නොසලකන්න .' ජාවාස්ක්‍රිප්ට් එන්ජිම " <![CDATA[" සහ " ]]>" ලකුණු අර්ථ නිරූපණය කිරීමෙන් වලක්වා ගැනීම සඳහා , ඔබට ඒවා අදහස් දැක්වීම් වලින් ඔතා ගත හැකිය.

ඔබගේ ස්ක්‍රිප්ටයේ කිසිදු " <" හෝ " &" නොමැති නම්, ඔබට CDATAකෙසේ හෝ කොටසක් අවශ්‍ය නොවේ .


2
“CDATA කොටසකට කිසිසේත්ම බලපෑමක් නැත” යන ප්‍රකාශය (යෝජිත) HTML5 සඳහා සත්‍ය නොවේ. w3.org/TR/html5/syntax.html#cdata-sections
danorton

3
an ඩැනෝර්ටන් සිත්ගන්නා සුළුය. මම හිතන්නේ ඒක හරිම කැත මිශ්‍රණයක්. ස්ක්‍රිප්ට් අන්තර්ගතයට තවමත් බලපෑමක් නැත.
user123444555621

2
ඇතුළත ස්ක්‍රිප්ට් ටැග් කිසිවක් නරක බව දැන සිටියේ නැත </ .
සල්මාන් ඒ

3
AlSalmanA එය HTML හි අමුතුම දේවලින් එකක් වන අතර එය නිල වශයෙන් ETAGO ලෙස හැඳින්වේ . තව දැනගන්න: mathiasbynens.be/notes/etago (කිසිම බ්‍රව්සරයක් එම අංගය මෙතෙක් ක්‍රියාත්මක කර නොමැති බව ලිපියේ සඳහන් වන අතර, එය මට යම් කරදරයක් ඇති කළ බව මට හොඳටම විශ්වාසයි. සමහර විට වෙනත්
මෙවලමකින්

1
ඇත්ත වශයෙන්ම මම වලංගු කිරීමේ ගැටලුවලට මුහුණ දුන්නා - <script>var b = "<b>bold</b>";</script>වලංගු කිරීමට අසමත් නමුත් ඔබේ පිළිතුර කියවා <script>var b = "<b>bold<\/b>";</script>එය නිවැරදි කිරීමට වෙනස් කිරීමෙන් පසුව .
සල්මාන් ඒ

30

මූලික වශයෙන් එය XHTML සහ HTML යන දෙකම ලියවිල්ලක් ලිවීමට ඉඩ දීමයි. ගැටළුව වන්නේ XHTML තුළ, XML පාර්සර් විසින් ස්ක්‍රිප්ට් ටැගයේ ඇති &, <,> අක්ෂර අර්ථ නිරූපණය කර XML විග්‍රහ කිරීමේ දෝෂයක් ඇති කරයි. එබැවින්, ඔබට ඔබේ ජාවාස්ක්‍රිප්ට් ආයතන සමඟ ලිවිය හැකිය, උදා:

if (a &gt; b) alert('hello world');

නමුත් මෙය ප්‍රායෝගික නැත. විශාලතම ගැටළුව නම්, ඔබ HTML හි පිටුව කියවන්නේ නම්, ටැග් ස්ක්‍රිප්ට් CDATA 'පෙරනිමියෙන්' ලෙස සලකනු ලබන අතර එවැනි ජාවාස්ක්‍රිප්ට් ක්‍රියාත්මක නොවනු ඇත. එබැවින්, XHTML සහ HTML පාර්සර් භාවිතා කරමින් එකම පිටුව නිවැරදි වීමට ඔබට අවශ්‍ය නම්, ඔබට ස්ක්‍රිප්ට් ටැගය XHTML හි CDATA මූලද්‍රව්‍යයේ ඇතුළත් කළ යුතුය, නමුත් එය HTML හි ඇතුළත් කිරීමට අවශ්‍ය නොවේ.

මෙම උපක්‍රමය CDATA මූලද්‍රව්‍යයක ආරම්භය ජාවාස්ක්‍රිප්ට් විවරණයක් ලෙස සලකුණු කරයි; HTML හි ජාවාස්ක්‍රිප්ට් විග්‍රහකය CDATA ටැගය නොසලකා හරියි (එය විවරණයකි). XHTML හි, XML විග්‍රහකය (එය ජාවාස්ක්‍රිප්ටයට පෙර ක්‍රියාත්මක වේ) එය හඳුනාගෙන CDATA අවසානය දක්වා CDATA ලෙස සලකයි.


24

එය X (HT) ML දෙයක්. ඔබ ජාවාස්ක්‍රිප්ට් වැනි <සහ >ඇතුළත සංකේත භාවිතා කරන විට, උදා.

CDATA යන්නෙන් අදහස් කරන්නේ පහත දැක්වෙන රේඛා (දක්වා ඇති සියල්ල ]]>XML නොවන අතර එම නිසා එය විග්‍රහ නොකළ යුතුය.


18

එපා නොවන HTML4 දී CDATA භාවිතා එහෙත් ඔබ කළ යුතු XHTML දී CDATA භාවිතා කළ යුතුය ඔබ <සහ> වැනි unescaped සංකේත තිබේ නම් XML යක CDATA භාවිතා කරන්න.


11
CDATA HTML4 හි වලංගු නොවේ. සරලව කිවහොත් එය ව්‍යාකරණයේ කොටසක් නොවේ. CDATA යනු XML හි වාක්‍ය ඛණ්ඩයක් වන අතර XHTML යනු XML උප කුලකයකි. එබැවින් එය භාවිතා කළ යුත්තේ XML (සහ එහි උප කුලක) තුළ පමණි. අනෙක් අතට HTML යනු XML නොවේ.
ලොරන් සේගල්

17

බාහිරව යොමු කරනවාට වඩා ඔබේ පිටුවට ජාවාස්ක්‍රිප්ට් ඇතුළත් කර ඇති විට XHTML වලංගුකරණය නිවැරදිව ක්‍රියාත්මක වන බව සහතික කිරීම.

ඔබේ පිටුව XML සලකුණු අවශ්‍යතා වලට අනුකූල වීම XHTML ට අවශ්‍ය වේ. ජාවාස්ක්‍රිප්ට් හි විශේෂ අරුතක් ඇති අක්ෂර අඩංගු විය හැකි බැවින්, වලංගු කිරීම එය විකෘති ලෙස සලකුණු නොකරන බවට වග බලා ගැනීම සඳහා ඔබ එය CDATA හි ඔතා තිබිය යුතුය.

වෙබයේ ඇති HTML පිටු සමඟ ඔබට අවශ්‍ය ජාවාස්ක්‍රිප්ට් සහ ටැග් අතර ඇතුළත් කළ හැකිය. ඔබේ වෙබ් පිටුවේ ඇති HTML වලංගු භාවය ඔබ වලංගු කරන විට, ජාවාස්ක්‍රිප්ට් අන්තර්ගතය CDATA (අක්ෂර දත්ත) ලෙස සලකනු ලබන අතර එම නිසා එය වලංගු කරන්නා විසින් නොසලකා හරිනු ලැබේ. ඔබේ වෙබ් පිටුව සැකසීමේදී වඩාත් නවීන XHTML ප්‍රමිතීන් අනුගමනය කරන්නේ නම් එය සත්‍ය නොවේ. XHTML සමඟ ස්ක්‍රිප්ට් ටැග් අතර කේතය PCDATA (විග්‍රහ කරන ලද අක්‍ෂර දත්ත) ලෙස සලකනු ලැබේ, එබැවින් එය වලංගු කරන්නා විසින් සකසනු ලැබේ.

මේ හේතුව නිසා, ඔබේ වෙබ් පිටුව 'බිඳ දැමීම' නොකර ඔබේ පිටුවේ ඇති ස්ක්‍රිප්ට් ටැග් අතර ජාවාස්ක්‍රිප්ට් ඇතුළත් කළ නොහැක (අවම වශයෙන් වලංගු කරන්නා සැලකිලිමත් වන තාක් දුරට).

ඔබට CDATA ගැන වැඩි විස්තර මෙතැනින් සහ XHTML ගැන වැඩි විස්තර දැනගත හැකිය .



9

ඔබ දැඩි XHTML අනුකූලතාවයක් සඳහා යන විට, ඔබට CDATA අවශ්‍ය වන්නේ ඊට වඩා අඩුවෙන් වන අතර ඇම්පියර්සෑන්ඩ් අවලංගු අක්ෂර ලෙස සලකුණු නොකෙරේ.



8

CDATA බ්‍රව්සරයට පවසන්නේ පෙළ එලෙසම පෙන්වන ලෙසත් එය HTML ලෙස ඉදිරිපත් නොකරන ලෙසත්ය.


5

CDATA ඇඟවුම් කරන්නේ එහි අන්තර්ගතය XML නොවන බවයි.


5

ඕනෑම XML උපභාෂාවකදී CDATA අවශ්‍ය වේ, මන්ද XML නෝඩයක් තුළ ඇති පෙළ ජාවාස්ක්‍රිප්ට් ලෙස ඇගයීමට පෙර ළමා අංගයක් ලෙස සලකනු ලැබේ. ජේඑස්ලින්ට් රීජෙක්ස් වල චරිතය ගැන පැමිණිලි කිරීමට හේතුව <මෙයයි.

යොමුව



2

ඒ ආකාරයෙන් පැරණි බ්‍රව්සරය ජාවාස්ක්‍රිප්ට් කේතය විග්‍රහ නොකරන අතර පිටුව කැඩී යන්නේ නැත.

පසුගාමී අනුකූලතාව. ගොටා ඒකට කැමතියි.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.