ස්වයං-වසා දැමීමේ ස්ක්‍රිප්ට් අංග ක්‍රියා නොකරන්නේ ඇයි?


1367

බ්‍රව්සර් නිවැරදිව හඳුනා නොගැනීමට හේතුව කුමක්ද:

<script src="foobar.js" /> <!-- self-closing script element -->

මෙය පමණක් හඳුනාගෙන ඇත:

<script src="foobar.js"></script>

මෙය XHTML සහාය පිළිබඳ සංකල්පය බිඳ දමන්නේද?

සටහන: මෙම ප්‍රකාශය අවම වශයෙන් සියලුම IE සඳහා (6-8 බීටා 2) නිවැරදි වේ.


12
ක්‍රෝම් සහ ඔපෙරා හි වැඩ කරයි
කෝරිමාටෙව්ස්

47
ක්‍රෝම් හි සමහර මෑත සංස්කරණ මෙය බිඳ දැමූ බවක් පෙනේ, ස්වයං-වසා දැමීමේ ස්ක්‍රිප්ට් ටැග් තවදුරටත් ක්‍රෝම් හි ක්‍රියාත්මක නොවේ
ඇඩම් නෙස්

13
එය ස්ක්‍රිප්ට් ටැග් පමණක් නොවේ. ස්වයං-වසා දැමීමේ div ටැගයන් ක්‍රියා කරනු ඇතැයි මම විශ්වාස නොකරමි.
DOK

7
2011 ජූලි වන විට ක්‍රෝම් සහ ෆයර්ෆොක්ස් වලට මෙම ගැටළුව තිබේ. "එය දෝෂයක් නොවේ, එය අංගයකි" - ඇත්තෙන්ම කරදරකාරී ය.
මාටින් කොනිසෙක්

4
මෙහි වඩාත් පොදු අනුවාදය දින දෙකකට පසුව විමසන ලදි: stackoverflow.com/questions/97522/…
සිරෝ සැන්ටිලි 郝海东 冠状 病 六四 法轮功 法轮功

Answers:


484

XHTML 1 පිරිවිතරයේ මෙසේ සඳහන් වේ:

С.3. මූලද්රව්ය අවම කිරීම සහ හිස් මූලද්රව්ය අන්තර්ගතය

අන්තර්ගත ආකෘතියක් නොමැති මූලද්‍රව්‍යයක හිස් නිදසුනක් ලබා දී ඇති විට EMPTY(නිදසුනක් ලෙස හිස් මාතෘකාවක් හෝ ඡේදයක්) අවම පෝරමය භාවිතා <p> </p>නොකරන්න (උදා: භාවිතය සහ නොවේ <p />).

XHTML DTD විසින් ස්ක්‍රිප්ට් අංග පහත පරිදි දක්වයි :

<!-- script statements, which may include CDATA sections -->
<!ELEMENT script (#PCDATA)>

112
කෙසේ වෙතත්, “එපා” යනු “නොකළ යුතු දේ” හා සමාන නොවේ. මෙය මාර්ගෝපදේශයකි (අනුකූලතාව සඳහා, කොටසේ මාතෘකාව මඟින් යෝජනා කර ඇති පරිදි), රීතියක් නොවේ.
කොන්රාඩ් රුඩොල්ෆ්

44
ඇත්තටම, මට මෙම සීමාව සඳහා කිසිදු ප්‍රයෝජනයක් සොයාගත නොහැක :) එය සම්පූර්ණයෙන්ම කෘතිම ලෙස පෙනේ.
ස්කොඩෙට්

22
නිවැරදි පිළිතුර ලබා දුන්නේ ඔලව්ක් විසිනි. XHTML 1.0 හි උපග්‍රන්ථය C යනු දේවල් පවතින ආකාරයට වීමට හේතුව නොවේ - එය දේවල් පවතින ආකාරයට ක්‍රියා කරන්නේ කෙසේද යන්නයි.
hsivonen

32
එය පිරිවිතරයේ සම්මත කොටසක් නොවේ. එය XHTML සඳහා සහය නොදක්වන
කෝර්නෙල්

13
ගැටළුව <script />වන්නේ පිරිවිතර එය අනුමත නොකිරීම නොවේ, නමුත් අන්තර්ගත වර්ගය යෙදුම / xhtml + xml නොවේ නම් බ්‍රව්සර් එය "ටැග් නොවන සුප්" ලෙස අර්ථ නිරූපණය නොකරයි. බලන්න: stackoverflow.com/questions/348736/… hab ෂබන්ක්: බ්‍රව්සර් එය තේරුම් ගත් බවක් පෙනෙන්නට තිබුණත් ඇත්ත වශයෙන්ම සිදුවන්නේ එය ඡේදය තුළ <p /> ට පසුව අන්තර්ගතය තැබීමයි, ස්කොඩෙට්ගේ උපුටා දැක්වීම අර්ථ නිරූපණය කිරීම නිසා < p> හිස් නොවේ, එය ස්වයං වසා දැමීමක් විය නොහැක. XHTML 1.1 දී, එය කළ හැකි ස්වයං-අවසන් විය.
ජෝ

241

බ්රැඩ් හා squadette පවසා ඇති දේ එකතු කිරීම සඳහා, ස්වයං-වසා XML කාරක රීති <script />ඇත්තටම වේ නිවැරදි XML, නමුත් ප්රායෝගික වැඩ කිරීමට ඒ සඳහා, ඔබේ වෙබ් සේවාදායකය ද වැනි XML mimetype සමග නිවැරදිදැයි XML ලෙස ඔබගේ ලිපි ලේඛන යැවීමට අවශ්ය application/xhtml+xmlලෙස HTTP දී අන්තර්ගත-වර්ගය ශීර්ෂ (සහ නොහැකි ලෙස text/html).

කෙසේ වෙතත්, එක්ස්එම්එල් මිමීටයිපයක් යැවීමෙන් ඔබේ පිටු IE7 විග්‍රහ නොකෙරේ, එය කැමති වන්නේ පමණි text/html.

W3 සිට :

සාරාංශයක් ලෙස, 'යෙදුම / xhtml + xml' XHTML පවුලේ ලේඛන සඳහා භාවිතා කළ යුතු අතර, 'පෙළ / html' භාවිතය HTML අනුකූල XHTML 1.0 ලේඛන වලට සීමා විය යුතුය. 'application / xml' සහ 'text / xml' MAY ද භාවිතා කළ හැකි නමුත් සුදුසු සෑම විටම 'application / xhtml + xml' භාවිතා කළ යුත්තේ එම සාමාන්‍ය XML මාධ්‍ය වර්ගවලට වඩා ය.

මම මීට මාස කිහිපයකට පෙර මේ ගැන ප්‍රහේලිකාවක් කළ අතර, වැඩ කළ හැකි එකම (FF3 + සහ IE7 සමඟ අනුකූල) විසඳුම වූයේ පැරණි <script></script>සින්ටැක්ස් text/html(HTML සින්ටැක්ස් + HTML මිමීටයිප්) සමඟ භාවිතා කිරීමයි .

ඔබේ සේවාදායකයා text/htmlඑහි HTTP ශීර්ෂයන්හි වර්ගය යවන්නේ නම් , නිසි ලෙස සකස් කරන ලද XHTML ලේඛන සමඟ වුවද, FF3 + එහි HTML විදැහුම්කරණ මාදිලිය භාවිතා කරනු ඇත, එයින් අදහස් වන්නේ එය ක්‍රියා <script />නොකරනු ඇති බවයි (මෙය වෙනසක්, ෆයර්ෆොක්ස් මීට පෙර දැඩි ලෙස අඩු විය).

මෙම නොසලකා ඕනෑම fiddling ක සිදු වනු ඇත http-equivඑය ලැබෙන එක් වරක් ෆයර්ෆොක්ස් ශාඛා - මෙටා මුලද්රව්ය XML prolog හෝ doctype ඔබගේ ලේඛනය තුල text/htmlබලන්න තුල HTML හෝ XML ව්යාකරණ විග්රහ පෙනුම යන්න තීරණය, සහ HTML ව්යාකරණ විග්රහ නොතේරෙන බව ශීර්ෂ, <script />.


3
ඔබ IE7 සඳහා සහය අතහැර දැමුවහොත්, පෙළ / xml යැවීමෙන් ඔබට <ස්ක්‍රිප්ට් /> සඳහා පුළුල් බ්‍රව්සර සහාය ලැබෙනු ඇතැයි නිගමනය කිරීම නිවැරදි ද?
ක්‍රිස් මොස්චිනි

7
කෙටියෙන් කිවහොත්, <ස්ක්‍රිප්ට් /> වැඩ කරන්නේ ඔබේ පිටුවෙහි MIME වර්ගය xhtml / xml නම් පමණි. සාමාන්‍ය පෙළ / html පිටු සඳහා, එය ක්‍රියා නොකරනු ඇත. අපි "xhtml / xml" MIME වර්ගය භාවිතා කිරීමට උත්සාහ කළහොත්, එය IE අනුකූලතාව බිඳ දමනු ඇත. සාරාංශගත කිරීම සඳහා, සන්සුන්ව සිටින්න සහ <script> ... </script> ස්තූතියි ජෝ ;-)
නවීන් ඉස්රානි

1
විශිෂ්ට පැහැදිලි කිරීමක්. අවධානයට ලක්විය යුතු තවත් කරුණක් නම් .html, මෙටා ටැග් නොසලකා සමාන හේතු නිසා ෆයර්ෆොක්ස් විසින් දේශීය ලිපිගොනු ටැග්-සුප් ලෙස ඉදිරිපත් කරනු ඇත. XHTML ගොනු සඳහා, ෆයර්ෆොක්ස් ඒවා නම් කරන්නේ නම් පමණි .xhtml.
alecov

H ක්‍රිස්මොෂිනි. බොහෝ විට, නමුත් භාවිතා කරන්න application/xhtml+xml, නැත text/xml.
TRiG

170

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

නවීන බ්‍රව්සර් භාවිතා කරන ටැග්-සුප් පාර්සර් පරිණාමය වූයේ මෙම උරුමයෙනි, නමුත් ඒවායේ විග්‍රහ කිරීමේ ආකෘතිය තවදුරටත් පිරිසිදු එස්ජීඑම්එල් නොවේ. ඇත්ත වශයෙන්ම, ඔබ එක්ස්එම්එල් මයිම් වර්ගයක් සමඟ එවන්නේ නැත්නම් ඔබේ පරිස්සමින් සකස් කරන ලද එක්ස්එච්එම්එල් නරක ලෙස ලියා ඇති එස්ජීඑම්එල්-ආනුභාව ලත් ටැග්-සුප් ලෙස සලකනු ලැබේ. මේ නිසා තමයි ...

<p><div>hello</div></p>

... බ්‍රව්සරය විසින් අර්ථ නිරූපණය කරන්නේ:

<p></p><div>hello</div><p></p>

... ඔබ DOM ට එරෙහිව කේත කිරීමට උත්සාහ කරන විට ඔබව යෝග්‍යතාවයට ඇද දැමිය හැකි සුන්දර අපැහැදිලි දෝෂයක් සඳහා වූ වට්ටෝරුව මෙයයි.


4
මට කුතුහලයක්. බ්‍රව්සරය එය එසේ අර්ථ නිරූපණය කිරීමට තෝරා ගන්නේ ඇයි?
අහමඩ් ඒයොන් ඇක්සාන්

32
@AhmedAeonAxan: මෙම Pමූලද්රව්යය අඩංගු විය නොහැක DIVමූලද්රව්ය (මෙම වලංගු HTML මිල), බ්රව්සරය එසේ නිසැකයෙන්ම සමබරයි Pවිවෘත පෙර ( "නිසැකයෙන්ම closeable" ලෙස අර්ථ) අංගයක් DIVටැගය. කෙසේ වෙතත්, බ්‍රව්සර් මේ සම්බන්ධයෙන් වෙනස් ලෙස හැසිරීමට නැඹුරු වේ (ඕනෑම අවලංගු HTML සමඟ ඔවුන්ට කළ හැකි පරිදි).
MrWhite

5
OleColeJohnson නැත, මෙය ටැග් සුප් නොවේ; greim වලංගු සහ අවලංගු HTML අතර මායිම අවුල් කරයි. ටැග් සුප් යනු කතුවරුන් නීති රීති නොසලකන විට ඔබට ලැබෙන දෙයයි, මන්ද බ්‍රව්සර් දෝෂ නිවැරදි කිරීම භාවිතා කරයි. </p>අනෙක් අතට නැතිවූ අවසන් ටැගය ඇත්ත වශයෙන්ම HTML හි අර්ථ දැක්වීමේ කොටසකි!
ලිස්ටර් මහතා

3
RMrLister - වර්ග කිරීම. "ටැග් සුප්" විස්තර කරන්නේ HTML විග්‍රහ කරන ආකාරය මිස එය රචනා කළ ආකාරය නොවේ. එය HTML පිළිබඳ හැඟීමක් ඇති කිරීම සඳහා භාවිතා කරන අසමාන උපාය මාර්ග බ්‍රව්සර් විස්තර කිරීමට භාවිතා කරන වචනයක් වන අතර එය දැඩි XML විග්‍රහයට වෙනස් වේ. එක්ස්එම්එල් විග්‍රහ කිරීම සඳහා අවසර දී ඇත්තේ එක්ස්එම්එල් මයිම් වර්ග සඳහා පමණි, නමුත් ඒවා කිසි විටෙකත් පුළුල් ලෙස භාවිතයට නොගත් හෙයින්, බ්‍රව්සර් වෙනත් "ටැග් සුප්" යෝජනා ක්‍රම වෙත වැටුණි.
ග්‍රීම්

8
අවලංගු සලකුණු කිරීම හැසිරවීමට ස්ථාවර ක්‍රමයක් ඇතුළුව HTML5 ඇත්ත වශයෙන්ම 'ටැග් සුප්' විග්‍රහ කිරීම ප්‍රමිතිකරණය කළේය. එතෙක්, බ්‍රව්සර් වර්ග කිරීම සඳහා අවලංගු සලකුණු කිරීමකින් කුමක් කළ යුතු දැයි සොයා ගැනීමට සිදු විය. වර්තමාන බ්‍රව්සර්වල ඇති HTML විග්‍රහකය මෙතෙක් ලියන ලද වඩාත්ම දියුණු මෘදුකාංගයකි. වේගවත් ප්‍රති and ල ලබා දෙන ඕනෑම ආදානය සමඟ ගනුදෙනු කළ හැකිය.
ස්ටිජන් ඩි විට්

162

තවත් සමහරු "කෙසේද" යන්නට පිළිතුරු දී ඇති අතර පිරිවිතර උපුටා දක්වා ඇත. <script/>දෝෂ වාර්තා සහ තැපැල් ලැයිස්තු හාරා පැය ගණනාවකට පසු "ඇයි නැත්තේ" පිළිබඳ ඇත්ත කතාව මෙන්න .


HTML 4

HTML 4 SGML මත පදනම් වේ .

මෙය SGML සමහර ඇත shorttags වැනි, <BR//, <B>text</>, <B/text/, හෝ <OL<LI>item</LI</OL>. XML පළමු ස්වරූපය ගනී, අවසානය ">" ලෙස නැවත අර්ථ <BR/>දක්වයි (SGML නම්යශීලී වේ), එවිට එය බවට පත්වේ .

කෙසේ වෙතත්, HTML redfine නැත, ඒ නිසා <SCRIPT/> කළ යුතු අදහස් <SCRIPT>> .
(ඔව්, '>' අන්තර්ගතයේ කොටසක් විය යුතු අතර ටැගය තවමත් වසා නැත .)

පැහැදිලිවම, මෙම XHTML සමග නොසැසඳේ සහ ඇත බොහෝ වෙබ් අඩවි (කාලය විසින් බ්රව්සර තරම් පරිණත විය බිඳ රැකබලා මේ ගැන ), එසේ කිසිවෙක් shorttags ක්රියාත්මක සහ පිරිවිතර ඔවුන්ට එරෙහිව උපදෙස් දෙයි .

'ලදායි ලෙස, සියලුම' වැඩ කරන 'ස්වයං-අවසන් ටැගයන් තාක්‍ෂණිකව අනුකූල නොවන පාර්සර් මත තහනම් අවසන් ටැග් සහිත ටැග් වන අතර ඇත්ත වශයෙන්ම එය අවලංගුය. XHTML වෙත HTML අනුකූල වන පරිදි මාරුවීමට මෙම කඩුල්ල සමඟ පැමිණියේ W3C ය .

හා <script>ගේ අවසන් ටැගය වේ තහනම් නොවේ .

"ස්වයං-අවසානය" ටැගය HTML 4 හි හැක් එකක් වන අතර එය අර්ථ විරහිත ය.


HTML 5

HTML5 ටැග් වර්ග පහක් ඇති අතර ඒවා 'අවලංගු' සහ 'විදේශීය' ටැග් පමණි ඇති අතර ස්වයං-වසා දැමීමට අවසර .

<script>අවලංගු නොවන නිසා (එය විය හැකිය අන්තර්ගතය ) සහ විදේශීය නොවන (MathML හෝ SVG වැනි), <script>ඔබ එය භාවිතා කරන ආකාරය නොසලකා ස්වයං-වසා දැමිය නොහැක.

නමුත් ඇයි? ඔවුන්ට එය විදේශීය ලෙස සැලකිය නොහැකිද, විශේෂ නඩුවක් හෝ වෙනත් දෙයක් කළ හැකිද?

HTML 5 HTML 4 සහ XHTML 1 ක්‍රියාත්මක කිරීම සමඟ පසුගාමී-අනුකූල වීම අරමුණු කරයි . එය SGML හෝ XML මත පදනම් නොවේ; එහි වාක්‍ය ඛණ්ඩය ප්‍රධාන වශයෙන් සැලකිලිමත් වන්නේ ක්‍රියාත්මක කිරීම ලේඛනගත කිරීම හා එක්සත් කිරීම ය. ( අවලංගු HTML4 නොතකා යනාදිය වලංගු HTML 5 වන්නේ මේ නිසා ය.)<br/> <hr/>

ස්වයං-වැසීම <script>යනු ක්‍රියාත්මක කිරීම් එකිනෙකට වෙනස් වන ටැගයන්ගෙන් එකකි. එය Chrome, Safari වැඩ කිරීම සඳහා භාවිතා , සහ ඔපෙරා ; මගේ දැනුමට අනුව එය කිසි විටෙකත් ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් හෝ ෆයර්ෆොක්ස් හි වැඩ කළේ නැත.

HTML 5 කෙටුම්පත් කරන විට මෙය සාකච්ඡා කරන ලද අතර එය බ්‍රව්සර් අනුකූලතාව බිඳ දැමූ නිසා ප්‍රතික්ෂේප විය . ස්වයං-සමීප ස්ක්‍රිප්ට් ටැගය ඇති වෙබ් පිටු පැරණි බ්‍රව්සර්වල නිවැරදිව (කිසිසේත් නොමැති) විදහා දක්වනු ඇත. එහි සිටි අනෙකුත් යෝජනා , නමුත් එක්කෝ ඔවුන් ගැළපුම ගැටලුව විසඳීමට නොහැකි ය.

කෙටුම්පත මුදා හැරීමෙන් පසුව, වෙබ්කිට් විසින් අනුග්‍රාහකයාට අනුකූල වන පරිදි යාවත්කාලීන කරන ලදී.

<script>HTML 4 සහ XHTML 1 සමඟ පසුගාමී අනුකූලතාවය නිසා ස්වයං වසා දැමීම HTML 5 හි සිදු නොවේ.


XHTML 1 / XHTML 5

XHTML ලෙස සැබවින්ම සේවය කළ විට <script/>, වෙනත් පිළිතුරු වල සඳහන් පරිදි සැබවින්ම වසා ඇත.

HTML ලෙස සේවය කරන විට එය ක්‍රියාත්මක විය යුතු බව පිරිවිතරයේ සඳහන් වනවා හැර :

XHTML ලේඛන ... බොහෝ HTML බ්‍රව්සර් සමඟ අනුකූල වන බැවින් අන්තර්ජාල මාධ්‍ය වර්ගය "text / html" [RFC2854] සමඟ ලේබල් කළ හැකිය.

ඉතින්, මොකද වුණේ?

නිශ්චිත අන්තර්ගත ශීර්ෂය නොසලකා ( අන්තර්ගත ස්නයිෆින් ලෙස හැඳින්වේ ) ෆයර්ෆොක්ස් විසින් XHTML ලෙස අනුකූල ලිපි ලේඛන විග්‍රහ කිරීමට ඉඩ දෙන ලෙස ජනතාව මොසිල්ලාගෙන් ඉල්ලා සිටියහ . මෙය ස්වයං-වසා දැමීමේ ස්ක්‍රිප්ට් වලට ඉඩ දෙනු ඇති අතර, කෙසේ වෙතත් අන්තර්ගත හොර රහසේ අවශ්‍ය වූයේ වෙබ් ධාරකයන් නිවැරදි ශීර්ෂයට සේවය කිරීමට තරම් පරිණත නොවූ බැවිනි; IE විය එය හොඳ .

නම් පළමු බ්රවුසරය යුද්ධය IE 6 අවසන් නො වී, XHTML ද, මෙම ලැයිස්තුවට ඇති. නමුත් එය අවසන් විය. IE 6 XHTML සමඟ ගැටළුවක් ඇත. ඇත්ත වශයෙන්ම IE නිවැරදි MIME වර්ගයට කිසිසේත් සහාය නොදැක්වූ අතර , සෑම කෙනෙකුමtext/html XHTML සඳහා භාවිතා කිරීමට බල කළේ IE ප්‍රධාන වෙළඳපල කොටස හිමි කරගත් නිසාය මුළු දශකය පුරාම කර ගත් බැවිනි.

ද අන්තර්ගතය sniffing විය හැකි නරක මිනිස්සු කියන්නේ එය නතර කළ යුතු .

අවසාන වශයෙන්, W3C විසින් XHTML වංචාකාරී ලෙස අදහස් නොකල බව පෙනේ : ලේඛනය HTML සහ XHTML සහ නීති දෙකමContent-Type වේ. කෙනෙකුට කිව හැක්කේ ඔවුන් “අපගේ පිරිවිතර අනුගමනය කරන්න” සහ ප්‍රායෝගික දේ නොසලකා හැරීම මත ස්ථිරව සිටි බවයි . අඛණ්ඩව සිදු වූ අත්වැරැද්දකි පසුව XHTML සංස්කරණ බවට.

කෙසේ වෙතත්, මෙම තීරණය ෆයර්ෆොක්ස් සඳහා වූ කාරණය සමථයකට පත් කළේය . ක්‍රෝම් උපත ලැබීමට වසර 7 කට පෙර ; වෙනත් වැදගත් බ්‍රව්සරයක් නොතිබුණි. මේ අනුව එය තීරණය විය.

පහත දැක්වෙන පිරිවිතරයන් නිසා ඩොක්ටයිප් පමණක් සඳහන් කිරීමෙන් එක්ස්එම්එල් විග්‍රහ කිරීම අවුලුවන්නේ නැත.


1
NdAndyE ඔබ ස්වයං-වසා දැමීමේ <ස්ක්‍රිප්ට්> ලියන විට, එකල ප්‍රධාන බ්‍රව්සර් එය වසා ඇති බව නොසිතන අතර, පසුව එන HTML ජාවාස්ක්‍රිප්ට් ලෙස විග්‍රහ කරනු ඇත, එමඟින් වලංගු HTML5 මෙම පැරණි බ්‍රව්සර් මත කැඩී යයි. මේ අනුව යෝජනාව ප්‍රතික්ෂේප වේ. සම්බන්ධිත HTML5 තැපැල් ලැයිස්තුවේ මෙය පැහැදිලි කර ඇත.
බැටළු

2
Nd ඇන්ඩි: ඔබ විස්තර කරන්නේ ඉදිරි අනුකූලතාවයයි - නව කේත සම්පාදක / පරිවර්තක / විග්‍රහකය සමඟ වැඩ කිරීමට පැරණි කේතයට ඇති හැකියාව. පසුගාමී අනුකූලතාව යනු පැරණි කේත සම්පාදක / පරිවර්තක / විග්‍රහකය සමඟ වැඩ කිරීමට නව කේතයට ඇති හැකියාවයි. එබැවින් ඔව්, පසුගාමී ගැළපුම ගැටළුව වූයේ නව පිරිවිතර මනසේ ලියා ඇති පිටු පැරණි බ්‍රව්සර්වල ක්‍රියා නොකරනු ඇත (ඔව්, පැරණි බ්‍රව්සර්වල හැකිතාක් දුරට නව කේත වැඩ කිරීමට උත්සාහ කිරීම වෙබ් වැඩසටහන්කරණ සම්ප්‍රදායකි).
slebetman

3
M දිමිත්‍රි යථාර්ථය නම්, ස්වයං-සංවෘත ස්ක්‍රිප්ට් තහනම් කිරීම එක් මාර්ගයක්. සම්බන්ධිත පරිදි , ස්වයං-සංවෘත <ස්ක්‍රිප්ට්> සියලු බ්‍රව්සර් බිඳ දමනු ඇත , පරිශීලකයින් හුදෙක් හිස් පිටුවක් දකිනු ඇත - ක්‍රීඩා කොන්සෝල, අන්තර්ජාල රූපවාහිනිය, නව ආයතනික වින් 7 පරිගණකයේ IE 11 , ජාවා ධාවන කාලය මිලියන ගණනක් හෝ ස්මාර්ට්ෆෝන් බිලියන ගණනක්. බොහෝ උපාංගවල බොහෝ භාෂා වල වෙබ් දසුන් යාවත්කාලීන කළ හැකිද? HTML5 උත්සාහ කළේ නම් ඒවා XHTML2 මෙන් අසමත් වනු ඇත.
බැටළු

6
ඉතා අවතක්සේරු කළ පිළිතුර
කමිල් ටොමෙක්

2
ටිකක් නිවැරදි කිරීම: HTML හි ස්වයං-සංවෘත ලෙස ක්‍රියා කරන ටැගයන් විකල්ප අන්ත ටැග් සහිත ඒවා නොව, තහනම් අවසන් ටැග් සහිත (හිස් හෝ අවලංගු, ටැග්). සමග ටැග් විකල්ප වැනි අවසන් ටැග්, <p>හෝ <li>, ඔවුන් සිට 'ස්වයං වසා' විය නොහැකි හැකි වැනි කේතය නිසා, අන්තර්ගතය තිබෙන <p/>අ (විකෘති) ඒ වෙන කිසිවක් නැහැ මේ අංගයක් අවසර දී ඇත්තේ නම්, එය පසු ටැගය සහ අන්තර්ගතයට ආරම්භ , එය ඇතුළත අවසන් වනු ඇත.
ඉල්යා ස්ට්‍රෙල්ට්සින්

44

ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 8 සහ ඊට පෙර XHTML විග්‍රහ කිරීමට සහාය නොදක්වයි. ඔබ XML ප්‍රකාශයක් සහ / හෝ XHTML ඩොක්ටයිපයක් භාවිතා කළත්, පැරණි IE තවමත් ලේඛනය සරල HTML ලෙස විග්‍රහ කරයි. සරල HTML වලදී, ස්වයං-වැසීමේ වාක්‍ය ඛණ්ඩයට සහය නොදක්වයි. පසුපස කප්පාදුව නොසලකා හරිනු ලැබේ, ඔබට පැහැදිලි සංවෘත ටැගයක් භාවිතා කළ යුතුය.

IH 9 සහ ඊට පසු XHTML විග්‍රහ කිරීම සඳහා සහය දක්වන බ්‍රව්සර් පවා ඔබ XML අන්තර්ගත වර්ගයක් සමඟ ලේඛනයට සේවය නොකරන්නේ නම් ලේඛනය HTML ලෙස විග්‍රහ කරනු ඇත. නමුත් එවැනි අවස්ථාවකදී පැරණි IE ලේඛනය කිසිසේත් ප්‍රදර්ශනය නොකරනු ඇත!


9
"IE XHTML විග්‍රහ කිරීමට සහාය නොදක්වයි." මෙය ලියන අවස්ථාවේ IE අනුවාද සඳහා සත්‍ය වූ නමුත් එය තවදුරටත් සත්‍ය නොවේ.
එරික්ලෝ

RicEricLaw ඔබට මෙය නිවැරදි කළ IE අනුවාදය කුමක්ද? (සහ කිසියම් නිශ්චිත කොන්දේසි - උදා: වලංගු ඩොක්ටයිප් අවශ්‍යයි)
ස්කන්ලිෆ්

2
Xsunliffe IE9 යනු XHTML සඳහා පූර්ණ සහාය ඇති පළමු අනුවාදයයි. blogs.msdn.com/b/ie/archive/2010/11/01/…
එරික්ලෝ

28

ඉහත පුද්ගලයින් දැනටමත් ගැටලුව බොහෝ දුරට පැහැදිලි කර ඇත, නමුත් කාරණා පැහැදිලි කළ හැකි එක් දෙයක් නම්, මිනිසුන් <br/>HTML ලේඛනවල නිතරම භාවිතා කළත් , /එවැනි ස්ථානයක සිටින ඕනෑම අයෙකු මූලික වශයෙන් නොසලකා හරින අතර එය භාවිතා කිරීමට උත්සාහ කරන විට පමණි. XML සහ HTML ලෙස විග්‍රහ කළ හැකි දෙයක්. <p/>foo</p>උදාහරණයක් ලෙස උත්සාහ කරන්න , ඔබට සාමාන්‍ය ඡේදයක් ලැබේ.


22

ස්වයං වසා දැමීමේ ස්ක්‍රිප්ට් ටැගය ක්‍රියා නොකරනු ඇත, මන්ද ස්ක්‍රිප්ට් ටැගයේ පේළිගත කේත අඩංගු විය හැකි අතර, ගුණාංගයක් පැවතීම මත පදනම්ව එම අංගය සක්‍රිය හෝ අක්‍රිය කිරීමට HTML දක්ෂ නැත.

අනෙක් අතට, බාහිර සම්පත් වෙත යොමු කිරීම් ඇතුළත් කිරීම සඳහා HTML සතුව විශිෂ්ට ටැගයක් ඇත: <link>ටැගය, එය ස්වයං වසා දැමීමක් විය හැකිය. එය දැනටමත් ස්ටයිල් ෂීට්, ආර්එස්එස් සහ පරමාණු සංග්‍රහ, කැනොනිකල් යූආර්අයි සහ අනෙකුත් සියලු හොඳ දේවල් ඇතුළත් කිරීමට භාවිතා කර ඇත. ජාවාස්ක්‍රිප්ට් නැත්තේ ඇයි?

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

<link type="text/javascript" rel ="script" href="/path/tp/javascript" />

4
මම එයට කැමතියි, නමුත් එය "බුද්ධිමත්" නොවන්නේ ඇයි?
ජොෂ් එම්.

5
ස්ක්‍රිප්ට් එකක් පැටවීමේ කාර්යය හරියටම ඉටු කිරීම සඳහා පූර්ව නිශ්චිත ස්ක්‍රිප්ට් ටැගයක් ඇති නිසා .. ඔබ වෙනත් දෙයක් භාවිතා කරමින් කරුණු ව්‍යාකූල කරන්නේ ඇයි? නියපොතු වල මිටියක් මිටියක් .. සපත්තුවක් භාවිතා කිරීම බුද්ධිමත්ද?
ඩේව් ලෝරන්ස්

8
avedaveL - තවද අපට <style>ටැග් ඇත, නමුත් බාහිර CSS ගොනු සඳහා සම්බන්ධක ටැග් භාවිතා කරන්න. සම්බන්ධක ටැගය අර්ථ දැක්වීම: "<link> ටැගය ලේඛනයක් සහ බාහිර සම්පතක් අතර සම්බන්ධයක් අර්ථ දක්වයි." සම්බන්ධක ටැගය බාහිර CSS හෝ JS සඳහා භාවිතා කරනු ඇති බවට පරිපූර්ණ තාර්කික බවක් පෙනේ ... එය එයයි ... බාහිර ලිපිගොනු සම්බන්ධ කිරීම. සටහන මම කතා කරන්නේ පිරිවිතර / හරස් බ්‍රව්සර්නස් / යනාදිය නොවේ, මම අදහස් දක්වන්නේ CSS සහ JS යන දෙකම ගෙන ඒම සඳහා සබැඳි ටැග් භාවිතා කිරීමේ තාර්කික ස්වභාවය ගැන ය ... එය ඇත්ත වශයෙන්ම එය එසේ නම් බොහෝ අර්ථවත් වනු ඇත . සපත්තුව [ප්‍රතිසමයට] ගැලපෙන බවට විශ්වාස නැත.
ජිම්බෝ ජොනී

20

XML සහ XHTML මෙන් නොව, HTML හට ස්වයං වසා දැමීමේ වාක්‍ය ඛණ්ඩය පිළිබඳ දැනුමක් නොමැත. XHTML HTML ලෙස අර්ථකථනය කරන බ්‍රව්සරයන් එය නොදනී/ , ටැගය ස්වයං-වසා දැමීමක් විය යුතු බව චරිතය පෙන්වන බව ; ඒ වෙනුවට ඔවුන් එය හිස් ලක්ෂණයක් ලෙස අර්ථ නිරූපණය කරන අතර විග්‍රහකයා තවමත් ටැගය 'විවෘත' යැයි සිතයි.

මෙන් <script defer>ලෙස ප්රතිකාර කළ හැක <script defer="defer">, <script />ලෙස ප්රතිකාර කළ හැක <script /="/">.


33
මෙම පැහැදිලි කිරීම තරම් අලංකාර, එය ඇත්ත වශයෙන්ම වැරදිය. එය සත්‍ය නම්, DOM හි ස්ක්‍රිප්ට් මූලද්‍රව්‍යය සඳහා "/" ලක්ෂණයක් ඇත. මම IE, Firefox සහ Opera පරික්ෂා කර ඇති අතර, ඒ කිසිවක් ඇත්ත වශයෙන්ම එවැනි ලක්ෂණයක් අඩංගු නොවේ.
ඇලෝසි

11
/ යනු වලංගු ගුණාංග නාම අක්‍ෂරයක් නොවේ, එබැවින් එය ඉවතලනු ලැබේ. එසේ නොමැතිනම් මෙම පැහැදිලි කිරීම ඉතා පැහැදිලිය.
ශාලාව

1
ඇත්ත වශයෙන්ම, සමහර HTML විග්‍රහ කරන්නන් (සහ විශේෂයෙන් වලංගු කරන්නන්) /NET (Null End Tag) ඉදිකිරීමේ කොටසක් ලෙස අර්ථ දැක්විය හැකිය .
ඉලිඩාන් එස් 4 ට මොනිකා ආපසු

18

ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 8 සහ ඊට වැඩි අය XHTML සඳහා නිසි MIME වර්ගයට සහය නොදක්වයි application/xhtml+xml. text/htmlඉන්ටර්නෙට් එක්ස්ප්ලෝරර් හි මෙම පැරණි අනුවාදයන් සඳහා ඔබට කළ යුතු XHTML ලෙස ඔබ සේවය කරන්නේ නම් , එය HTML 4.01 ලෙස අර්ථ දැක්වෙනු ඇත. ඔබට කෙටි සින්ටැක්ස් භාවිතා කළ හැක්කේ සංවෘත ටැගය මඟ හැරීමට අවසර දෙන ඕනෑම අංගයක් සමඟ පමණි. HTML 4.01 පිරිවිතර බලන්න .

එක්ස්එම්එල් 'කෙටි පෝරමය' / ලෙස නම් කර ඇති ගුණාංගයක් ලෙස අර්ථ දැක්වේ, (සමාන ලකුණක් නොමැති නිසා) "/" හි ව්‍යංග අගයක් ඇති බව අර්ථ දැක්වේ. HTML 4.01 හි මෙය තදින්ම වැරදියි - ප්‍රකාශයට පත් නොකළ ගුණාංග වලට අවසර නැත - නමුත් බ්‍රව්සර් එය නොසලකා හරිනු ඇත.

IE9 පසුව XHTML 5 සහයෝගය සමග සේවය application/xhtml+xml.


IE 9 XHTML සඳහා සහය දක්වන අතර IE තවදුරටත්> 51% නොවේ. ඔබේ පිළිතුර යාවත්කාලීන කළ හැකිද?
ඩේමියන් යෙරික්

5

එයට හේතුව SCRIPT TAG යනු VOID ELEMENT නොවේ.

ක දී HTML ලේඛන - බලරහිත අංග නැහැ සියලු දී "වසා ටැගය" අවශ්යයි!

දී XHTML , හැම දෙයක්ම Generic බලපත්රය යටතේ අවසර ලබා ඇත, එම නිසා ඔවුන් සියලු අවශ්යතාවක් අවසන් උදා: "අවසන් ටැගය"; Br, සරල රේඛා බිඳීමක් <br></br>හෝ එහි කෙටිමං ඇතුළුව <br />.

කෙසේ නමුත්, මේ කේත රචනය මූලද්රව්ය කවදාවත් හිස් තැනක් හෝ පරාමිතික මූලද්රව්ය ද යත්, තිර රචනය ටැගය වෙනත් දෙයකට පෙර බ්‍රව්සර් උපදෙස් මිස දත්ත විස්තර ප්‍රකාශයක් නොවේ.

මූලික වශයෙන්, අර්ථකථන අවසන් කිරීමේ උපදෙස් උදා: "සංවෘත ටැගයක්" අවශ්‍ය වන්නේ අර්ථ නිරූපණයන් සැකසීම සඳහා පමණි. උදාහරණයක් වශයෙන්:

<H1>අර්ථ නිරූපණයන් පහත සඳහන් දේවලින් අවසන් කළ නොහැක, <P>මන්ද එය තමන්ගේම අර්ථ නිරූපණයන් අභිබවා යාමට ප්‍රමාණවත් නොවන නිසා පෙර H1 උපදෙස් මාලාව අවසන් කරයි. නව ඡේද රේඛාවකට ධාරාව බිඳ දැමීමට එයට හැකි වුවද , වර්තමාන අකුරු ප්‍රමාණය සහ විලාසිතාවේ රේඛා-උස ධාරාව යටින් ගලා ඒමට එය “ශක්තිමත්” නොවේ. , එනම් H1 වෙතින් කාන්දු වීම (P සතුව නොමැති නිසා) නොවේ. ).

"/" (අවසන් කිරීම) සං aling ා නිර්මාණය කර ඇත්තේ කෙසේද සහ ඇයි.

සාමාන්‍යයෙන් විස්තර නොකිරීමේ ටැගය වැනි < />, හමුවූ කඳුරැල්ලෙන් වැටෙන ඕනෑම තනි වැටීමකට ප්‍රමාණවත් වනු ඇත, උදා: <H1>Title< />නමුත් එය සැමවිටම එසේ නොවේ, මන්ද අපට "කැදැල්ල" කිරීමේ හැකියාව තිබිය යුතුය, ධාරාවේ බහු අතරමැදි ටැගින් කිරීම: බෙදීම වෙනත් කඳුරැල්ලකට ඔතා / වැටීමට පෙර ටොරන්ට් වලට. එහි ප්‍රති consequ ලයක් ලෙස < />දේපල අවසන් කිරීම සඳහා ඉලක්කය තීරණය කිරීමට නොහැකි වන සාමාන්‍ය පර්යන්තයක් . උදාහරණයක් ලෙස: <b>තද <i>තද-ඇල < /> අකුරු ඇල අකුරු</> සාමාන්‍ය. නිසැකව ම අපේ අරමුණයි අයිතිය ලබා ගැනීමට අසමත් බවත් බොහෝ විට එය අර්ථ නිරූපනය කරනු නිර්භීත එඩිතර-itallic තද සාමාන්ය.

මෙම ආකාරය වේ සංකල්පය ඉතා දවටනය එනම්., රුවනයකි උපත ලැබීය. (මෙම සංකල්ප කොතරම් සමානද යත්, එය හඳුනාගත නොහැකි අතර සමහර විට එකම මූලද්‍රව්‍ය දෙකම තිබිය හැකිය. <H1>එකවරම එතීම සහ බහාලුම් දෙකම වේ. එහෙත් <B>අර්ථකථන එතීම පමණි). අපට තැනිතලා, අර්ථකථන බහාලුමක් අවශ්‍ය නොවේ. ඇත්ත වශයෙන්ම ඩීඅයිවී මූලද්රව්යයක් සොයා ගැනීම පැමිණියේය.

DIV මූලද්‍රව්‍යය ඇත්ත වශයෙන්ම 2BR- බහාලුමක් වේ. ඇත්ත වශයෙන්ම CSS හි පැමිණීම සමස්ත තත්වයම වෙනත් ආකාරයකින් සිදුවීමට වඩා වෙහෙසකර කර ඇති අතර විශාල ප්‍රතිවිපාක රාශියක් සමඟ විශාල ව්‍යාකූලත්වයක් ඇති කළේය - වක්‍රව!

සීඑස්එස් සමඟ ඔබට අලුතෙන් නිර්මාණය කරන ලද ඩීඅයිවී හි පෙර සහ පසු බීආර් හැසිරීම පහසුවෙන් අභිබවා යා හැකි බැවින් එය බොහෝ විට හැඳින්වෙන්නේ “කිසිවක් නොකර බහාලුමක්” ලෙසිනි. එය ස්වාභාවිකවම වැරදියි! DIVs යනු බ්ලොක් මූලද්‍රව්‍යයන් වන අතර අවසානයට සං aling ා කිරීමට පෙර සහ පසුව ප්‍රවාහයේ රේඛාව ස්වදේශීයව බිඳ දමනු ඇත. වැඩි කල් නොගොස් WEB DIV-itis පිටුවෙන් පීඩා විඳින්නට පටන් ගත්තේය. ඒවායින් බොහොමයක් තවමත් පවතී.

ඕනෑම HTML ටැගයක ස්වදේශීය හැසිරීම මුළුමනින්ම අභිබවා යාමට සහ සම්පූර්ණයෙන්ම නැවත අර්ථ දැක්වීමට සීඑස්එස් වෙත ඇති හැකියාව, කෙසේ හෝ HTML පැවැත්මේ සමස්ත අරුත ව්‍යාකූල කිරීමට සහ බොඳ කිරීමට සමත් විය ...

හදිසියේම සියලුම HTML ටැග් යල් පැන ගිය ඒවා ලෙස පෙනෙන්නට තිබුණි, ඒවා අක්‍රීය වී, ඒවායේ මුල් අරුත, අනන්‍යතාවය සහ අරමුණ ඉවත් කර ඇත. කෙසේ හෝ ඔබට ඒවා තවදුරටත් අවශ්‍ය නොවන බවට හැඟීමක් ඇති වේ. කියමින්: සියලු දත්ත ඉදිරිපත් කිරීම සඳහා තනි බහාලුම්-එතීමේ ටැගයක් ප්‍රමාණවත් වේ. අවශ්‍ය ගුණාංග එකතු කරන්න. ඒ වෙනුවට අර්ථවත් ටැග් නොතිබිය යුත්තේ ඇයි; ඔබ යන විට ටැග් නම් සොයාගෙන නවක වදයට CSS ඉඩ දෙන්න.

Xhtml උපත ලැබුවේ මේ අයුරිනි. ඇත්ත වශයෙන්ම නවකයන් විසින් ඉතා ආදරයෙන් ගෙවනු ලබන මහා මොට්ටය සහ කුමක් ද යන්න සහ ඒ සියල්ලේ නපුරු අරමුණ කුමක්ද යන්න පිළිබඳ විකෘති දැක්මකි. W3C ලෝක ව්‍යාප්ත වෙබ් අඩවියෙන් ගියේ කුමක්ද වැරැද්ද, සහෝදරවරුනි? !!

HTML හි අරමුණ වන්නේ මානව ලබන්නා වෙත අර්ථවත් දත්ත ප්‍රවාහනය කිරීමයි.

තොරතුරු ලබා දීමට.

විධිමත් කොටස ඇත්තේ තොරතුරු ලබා දීමේ පැහැදිලි භාවයට සහාය වීම පමණි. xhtml තොරතුරු ගැන සුළු සැලකිල්ලක් දක්වන්නේ නැත. - ඒ සඳහා, තොරතුරු නියත වශයෙන්ම අදාල නොවේ.

කාරණයේ වැදගත්ම දෙය නම් xhtml යනු සමහර දීර් extended කරන ලද HTML වල අනුවාදයක් පමණක් නොවන බව දැන ගැනීම සහ තේරුම් ගැනීම , xhtml සම්පූර්ණයෙන්ම වෙනස් මෘගයෙකි; බිම් මට්ටම; එබැවින් ඒවා වෙන් වෙන්ව තබා ගැනීම නුවණට හුරුය.


3

'සත්‍ය XHTML', 'ව්‍යාජ XHTML' සහ HTML අතර වෙනස මෙන්ම සේවාදායකයා විසින් එවන ලද MIME වර්ගයේ වැදගත්කම දැනටමත් මෙහි හොඳින් විස්තර කර ඇත . ඔබට දැන් එය අත්හදා බැලීමට අවශ්‍ය නම්, දක්ෂ බ්‍රව්සර් සඳහා ස්වයං-සංවෘත ස්ක්‍රිප්ට් ටැගය ඇතුළුව සජීවී පෙරදසුනක් සහිත සරල සංස්කරණය කළ හැකි ස්නිපටයක් මෙන්න:

div { display: flex; }
div + div {flex-direction: column; }
<div>Mime type: <label><input type="radio" onchange="t.onkeyup()" id="x" checked  name="mime"> application/xhtml+xml</label>
<label><input type="radio" onchange="t.onkeyup()" name="mime"> text/html</label></div>
<div><textarea id="t" rows="4" 
onkeyup="i.src='data:'+(x.checked?'application/xhtml+xml':'text/html')+','+encodeURIComponent(t.value)"
><?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
[<!ENTITY x "true XHTML">]>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
  <p>
    <span id="greet" swapto="Hello">Hell, NO :(</span> &x;.
    <script src="data:text/javascript,(g=document.getElementById('greet')).innerText=g.getAttribute('swapto')" />
    Nice to meet you!
    <!-- 
      Previous text node and all further content falls into SCRIPT element content in text/html mode, so is not rendered. Because no end script tag is found, no script runs in text/html
    -->
  </p>
</body>
</html></textarea>

<iframe id="i" height="80"></iframe>

<script>t.onkeyup()</script>
</div>

ඔබ දැකිය යුතුයි Hello, true XHTML. Nice to meet you! පහත දැක්වෙන පෙළ .

නොහැකියාවෙන් යුත් බ්‍රව්සර් සඳහා ඔබට ටෙක්ස්ටාරියා හි අන්තර්ගතය පිටපත් කර .xhtml(හෝ .xht) දිගුවක් සහිත ගොනුවක් ලෙස සුරැකිය හැකිය ( මෙම ඉඟිය සඳහා ඇලෙක්ට ස්තූතියි ).


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.