ความคิดเห็น HTML ภายในแท็กสคริปต์เป็นแนวทางปฏิบัติที่ดีที่สุดหรือไม่? [ปิด]


97

การปฏิบัติต่อไปนี้เป็นเรื่องปกติธรรมดาใน JavaScript แบบอินไลน์ที่ฉันต้องใช้:

<script type="text/javascript">
   <!--
       // Code goes here
   //-->
</script>

ฉันรู้ว่าประเด็นคือการป้องกันไม่ให้เบราว์เซอร์ที่เข้ากันไม่ได้กับ JavaScript แสดงผลซอร์ส แต่ปัจจุบันนี้ยังคงเป็นแนวทางปฏิบัติที่ดีที่สุดหรือไม่ เบราว์เซอร์ส่วนใหญ่ที่ใช้ในปัจจุบันสามารถตีความ JavaScript ได้ แม้แต่อุปกรณ์พกพาสมัยใหม่ก็มักจะไม่มีปัญหา

สำหรับ 'ทำไมไม่?' คำถาม: เมื่อเร็ว ๆ นี้ฉันต้องใช้เวลาหลายชั่วโมงในการแก้ไขปัญหาที่มีคนทิ้งเครื่องหมาย "//" ไว้ข้างหน้า a "->" ที่ส่วนท้ายของแท็กสคริปต์ที่ฝังอยู่ลึกลงไปในบางหน้าและทำให้ JavaScript ลึกลับ ข้อผิดพลาด

คุณทำอะไร? นี่ยังถือเป็น "แนวทางปฏิบัติที่ดีที่สุด" หรือไม่


คำตอบ:


119

สิ่งสำคัญคือทุกวันนี้ไม่ว่าเบราว์เซอร์ใดจะรองรับ JavaScript หรือไม่ก็ไม่เกี่ยวข้อง (เห็นได้ชัดว่าคนส่วนใหญ่ทำ) - ไม่เกี่ยวข้องเพราะเกือบทั้งหมดเข้าใจบล็อกสคริปต์ซึ่งหมายความว่าพวกเขารู้ที่จะเพิกเฉยต่อ JavaScript แม้ว่าจะไม่สามารถทำได้ ตีความมัน

Matt Kruse ให้คำอธิบายโดยละเอียดเพิ่มเติมเล็กน้อยในไซต์JavaScript Toolboxของเขาว่าเหตุใดจึงไม่ใช้ความคิดเห็น HTML ในบล็อกสคริปต์โดยเฉพาะ

ยกมาจากหน้านั้น:


อย่าใช้ความคิดเห็น HTML ในบล็อกสคริปต์

ในสมัยโบราณของจาวาสคริปต์ (1995) เบราว์เซอร์บางตัวเช่น Netscape 1.0 ไม่มีการสนับสนุนหรือความรู้เกี่ยวกับแท็กสคริปต์ ดังนั้นเมื่อเปิดตัวจาวาสคริปต์ครั้งแรกจำเป็นต้องใช้เทคนิคในการซ่อนโค้ดจากเบราว์เซอร์รุ่นเก่าเพื่อไม่ให้แสดงเป็นข้อความในหน้า 'แฮ็ค' คือการใช้ความคิดเห็น HTML ภายในบล็อกสคริปต์เพื่อซ่อนโค้ด

การใช้ความคิดเห็น HTML ในสคริปต์ไม่ดี

// DON'T do this! Code is just representative on how things were done
<script language="javascript">
<!--
   // code here
//-->
</script>

ไม่มีเบราว์เซอร์ที่ใช้กันทั่วไปในปัจจุบันไม่สนใจแท็ก <script> ดังนั้นการซ่อนแหล่งที่มาของจาวาสคริปต์จึงไม่จำเป็นอีกต่อไป ในความเป็นจริงถือได้ว่าเป็นอันตรายเนื่องจากสาเหตุต่อไปนี้:

  • ภายในเอกสาร XHTML แหล่งที่มาจะถูกซ่อนจากเบราว์เซอร์ทั้งหมดและแสดงผลโดยไร้ประโยชน์
  • - ไม่ได้รับอนุญาตในความคิดเห็น HTML ดังนั้นการดำเนินการลดลงใด ๆ ในสคริปต์จึงไม่ถูกต้อง

1
+1. ฉันรู้ว่ามีใครบางคนที่มีข้อมูลมากมายเกี่ยวกับหัวข้อนี้จากวัน comp.lang.javascript ของฉันฉันกำลังอ่านที่เก็บกลุ่มข่าวเมื่อคำตอบของคุณปรากฏขึ้นโดยอ้างถึง Matt
Grant Wagner

1
ใน XHTML คุณสามารถใช้ CDATA แทนความคิดเห็น HTML: <script ... > // <! [CDATA [... //]]> </script>
Concrete Gannet

ฉันควรเพิ่มว่า 'แฮ็ก' นี้ก่อให้เกิดข้อผิดพลาดใน Internet Explorer 9 (ไคลเอนต์บ่นเกี่ยวกับหน้าที่ทำงานไม่ถูกต้องและนี่คือสาเหตุ)
lordscales91

24

เลิกทำไปแล้ว เมื่อถึงจุดหนึ่งคุณต้องปล่อย NCSA Mosaic ของคุณ


7
กล่าวอีกนัยหนึ่งก็คือไม่มีเหตุผลที่ระบุไว้ว่าทำไม OP จึงควรหยุดทำ คุณกำลังแนะนำให้เขาหยุดทำเพราะคุณทำซึ่งไม่ใช่เหตุผลที่ดีพอที่จะเป็นคำตอบ IMO
Lawrence Aiello

1
@LawrenceAiello: แล้ววลี "แนวทางปฏิบัติที่ดีที่สุด" ที่ทำให้คุณนึกถึง "ข้อเท็จจริง" ไม่ใช่ "ความคิดเห็น" ล่ะ?
วุ่นวาย

5
ในนั้นเป็นความผิดสูงสุดในโพสต์ทั้งหมดนี้ ควรปิดไปแล้วเนื่องจากเป็นคำถามสำหรับการสนทนา
Lawrence Aiello

1
บางทีเมื่อสิ่งนี้ถูกโพสต์เมื่อหกปีที่แล้วสิ่งนี้มีคุณสมบัติเป็นคำตอบอย่างไรก็ตามตามมาตรฐานของเว็บไซต์ในปัจจุบันก็ไม่ได้
j08691

1
คำตอบนี้กำลังถูกพูดถึงในMeta SO
CubeJockey

10

ตามคำแนะนำของ W3Cการซ่อนข้อมูลสคริปต์จากตัวแทนผู้ใช้มีประโยชน์เป็นหลัก

ยกมาจากหน้า W3c :

สคริปต์การแสดงความคิดเห็นใน JavaScript เอ็นจิน JavaScript อนุญาตให้สตริง"<!--"เกิดขึ้นที่จุดเริ่มต้นขององค์ประกอบ SCRIPT และละเว้นอักขระเพิ่มเติมจนกว่าจะสิ้นสุดบรรทัด JavaScript แปลว่า "//" เป็นการเริ่มต้นความคิดเห็นที่ขยายไปยังจุดสิ้นสุดของบรรทัดปัจจุบัน สิ่งนี้จำเป็นในการซ่อนสตริง "->" จากตัวแยกวิเคราะห์ JavaScript

    <SCRIPT type="text/javascript">
<!--  to hide script contents from old browsers
  function square(i) {
    document.write("The call passed ", i ," to the function.","<BR>")
    return i * i
  }
  document.write("The function returned ",square(5),".")
// end hiding contents from old browsers  -->
</SCRIPT>

2
หากกำลังใช้ HTML 4.x มันค่อนข้างแตกต่างกับ XHTML
Quentin

8

ไม่มันเป็นอาการเมาค้างจากวิธีแก้ปัญหาที่ใช้เมื่อเปิดตัวองค์ประกอบสคริปต์ครั้งแรก ไม่มีเบราว์เซอร์ใดที่ไม่เข้าใจองค์ประกอบสคริปต์ในวันนี้ (แม้ว่าจะเข้าใจว่าเป็น "สคริปต์ที่ควรละเว้นเนื่องจากปิดใช้งานสคริปต์หรือไม่ได้รับการสนับสนุน")

ใน XHTML เป็นอันตรายอย่างมาก

ฉันเขียนบางอย่างเกี่ยวกับประวัติของมันในขณะที่ย้อนกลับไป


3

หยุดใช้สิ่งนี้ในขณะที่กลับมา นอกจากนี้ตามDouglas Crockfordคุณสามารถวางแอตทริบิวต์ typeจากแท็กสคริปต์ของคุณได้เนื่องจากภาษาสคริปต์เดียวที่มีอยู่ในเบราว์เซอร์ส่วนใหญ่คือ JavaScript


1
เบราว์เซอร์ส่วนใหญ่จะยังใช้งานได้ แต่มันละเมิดข้อกำหนด HTML ดังนั้นฉันจะไม่แนะนำ
Quentin

4
คุณไม่มีทางรู้ว่า IE จะใช้สคริปต์ VB เป็นค่าเริ่มต้นเมื่อใด ..
Francis

1

หากคุณกำลังพิมพ์ด้วยตนเองฉันขอแนะนำให้คุณใช้ไฟล์ js ภายนอกเสมอซึ่งจะช่วยได้มาก

เกี่ยวกับข้อกังวลของคุณ: เบราว์เซอร์ส่วนใหญ่เป็น JavaScript ที่ปลอดภัยในปัจจุบัน อย่างไรก็ตามบางครั้งผู้คนอาจเขียนโปรแกรมแยกวิเคราะห์ง่ายๆเพื่อดึง HTML โดยตรงและฉันต้องบอกว่าคำพูดที่ปลอดภัยนั้นมีประโยชน์มากสำหรับลูกค้าเหล่านั้น นอกจากนี้ไคลเอนต์ที่ไม่ใช่ JS เช่น Lynx เก่าจะได้รับประโยชน์จากสิ่งนี้


1

หากคุณไม่รวมข้อความตามตัวอักษรระหว่างแท็กสคริปต์นั่นคือหากคุณโหลดสคริปต์จากไฟล์ src คุณสามารถลืมเกี่ยวกับความคิดเห็นได้



0

ฉันเลิกทำแบบนั้นเมื่อนานมาแล้ว คุณไม่จำเป็นต้องใช้มันในยุคนี้


@Yvette อะไรคือแรงจูงใจของคุณในการโพสต์ความคิดเห็นนั้นหกปีหลังจากที่ฉันโพสต์คำตอบ
John Topley

@Yvette ไม่มีความผิดใด ๆ ฉันแค่อยากรู้อยากเห็น และแน่นอนว่าคุณพูดถูก วันนี้ฉันจะโพสต์เป็นความคิดเห็น
John Topley

-1

ฉันไม่ทำ แต่เมื่อวันก่อนฉันไปตรวจสอบความถูกต้องของไซต์ที่มีการป้องกันด้วยรหัสผ่านที่ w3c ผมจึงต้องใช้วิธีป้อนข้อมูลโดยตรง มันบ่นเกี่ยวกับจาวาสคริปต์ของฉันดังนั้นฉันจึงใส่ความคิดเห็นกลับไปทุกอย่างก็เรียบร้อยดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.