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

อันที่จริง เมื่อนักพัฒนาส่วนใหญ่เห็นปรากฏการณ์นี้ ปฏิกิริยาแรกของพวกเขาคือ มีบั๊กในไวยากรณ์ JS หรือไม่? DOM ไม่ได้โหลดขึ้นมาหรือ? หรือสิทธิ์ถูกบล็อก?
ผลลัพธ์? ไม่มีเลยสักอย่าง ผู้ร้ายตัวจริงกลับกลายเป็นข้อเขียนโบราณนั่น:
<script language="javascript">
โค้ดบรรทัดนี้ ได้รับความนิยมอย่างมากเมื่อ 20 ปีที่แล้วคุณจะเห็นมันได้ในบทช่วยสอนทุกอันเลย
แต่ใน โครเมียมเวอร์ชัน 119หลังจากนั้น Google ก็บอกลา "ไวยากรณ์โบราณ" นี้ไป: ตราบใดที่คุณเห็น language คุณลักษณะต่างๆ เบราว์เซอร์จะละเว้นอย่างเลือกสรรและไม่แม้แต่จะอธิบายด้วยซ้ำ
ด้วยเหตุผลด้านความเข้ากันได้ Chrome บนเดสก์ท็อปจึงยังคง "ดูแลมันชั่วคราว" แต่ Chrome บนมือถือ Android ถือเป็น "แนวหน้า" และเปิดใช้กลยุทธ์การทำความสะอาดนี้ทันที
ส่งผลให้คอมพิวเตอร์ทำงานได้ปกติ แต่โทรศัพท์มือถือกลับทำงานผิดปกติ
เหตุใด Android จึงดำเนินการก่อน?
บางคนอาจถามว่า ทำไม Android Chrome ถึงเปิดตัวก่อน?
มันง่ายมากเพราะว่าความเร็วในการอัพเกรดเทอร์มินัลมือถือนั้นเร็วกว่า และ Google ยังส่งข้อมูลได้เร็วพอๆ กับการส่งอั่งเปาเลยทีเดียว
เมื่อ วันที่ 31 ตุลาคม 2566แอป Chrome 119 สำหรับ Android ได้เปิดตัวอย่างเป็นทางการผ่าน Google Play แล้ว
แม้ว่าเวอร์ชันเดสก์ท็อปจะใช้เคอร์เนล Chromium ด้วยก็ตาม แต่ก็เป็นธรรมเนียมที่จะต้อง "คอยช่วยเหลือ" เพื่อหลีกเลี่ยงการระเบิดระบบภายในองค์กรจำนวนมากอย่างกะทันหัน
ดังนั้นหากคุณยังคงใช้ประโยคว่า "language=javascript" บนโทรศัพท์ Android มันเทียบเท่ากับการเขียนโค้ดโปร่งใส ซึ่งเบราว์เซอร์จะละเว้นโดยตรง
วิธีแก้ไข: ทำได้ภายในสามวินาที
โชคดีที่วิธีแก้ไขปัญหานี้ง่ายมาก เพียงแค่แทนที่บรรทัดนี้:
<script>
หรือจะเป็นทางการกว่านั้นอีกเล็กน้อย:
<script type="text/javascript">
ใช้เวลาเพียงไม่กี่วินาทีในการแก้ไข และ Android Chrome จะดำเนินการทันที
อย่าลืม รีเฟรชแคชหลังจากทำการเปลี่ยนแปลงเสร็จมิเช่นนั้นเบราว์เซอร์อาจยังคงอ่านไฟล์เก่าอยู่ วิธีการนั้นง่ายมาก:
- คอมพิวเตอร์: Ctrl + F5
- โทรศัพท์: การตั้งค่า → ความเป็นส่วนตัว → ล้างแคช
เมื่อรีเฟรชแล้ว รหัสจะฟื้นคืนมาภายในไม่กี่วินาที และหน้าจะเริ่มทำงานอีกครั้ง
จริงๆแล้วนี่คือการ “ชำระบัญชี”
ท้ายที่สุดแล้ว ปัญหาไม่ได้อยู่ที่ JavaScript เอง แต่เป็นปัญหาที่เกิดจากการแก้ไขโค้ดฝั่ง front-end เก่าๆ ต่างหาก
สิ่งที่ผู้ผลิตเบราว์เซอร์จำเป็นต้องทำนั้นชัดเจนมาก นั่นคือ ค่อยๆ ทำความสะอาดไวยากรณ์ที่ล้าสมัยและบังคับให้นักพัฒนาทำการอัปเดต
มันก็เหมือนกับทางหลวง: ก่อนหน้านี้สามล้อและรถแทรกเตอร์ได้รับอนุญาตให้วิ่งเคียงข้างกัน แต่ในตอนนี้ด้วยเหตุผลด้านความปลอดภัย พวกมันจึงต้องขับออกไป language="javascript" รถแทรกเตอร์คันนั้นไม่ควรอยู่เลนเลนด่วน
นักพัฒนาควรใส่ใจเรื่องใดบ้าง?
เหตุการณ์นี้ถือเป็นการเตือนใจที่สมจริงมากสำหรับเรา:
รูปแบบการเขียนโค้ดมีความสำคัญมากโค้ดที่คุณคิดว่า "แค่ต้องทำงานได้" อาจใช้งานไม่ได้ในเวอร์ชันต่อๆ ไป
สภาพแวดล้อมการทดสอบต้องพัฒนาให้ทันกับความเปลี่ยนแปลงอย่าแค่คลิกไปมาใน Chrome บนคอมพิวเตอร์แล้วปล่อยใช้งาน คุณต้องทดสอบบนอุปกรณ์มือถือและเบราว์เซอร์เวอร์ชันต่างๆ ด้วย
ให้ความสนใจกับบันทึกการอัปเดตของเบราว์เซอร์การอัปเดต Chromium มักมาพร้อมกับข้อความ "การเลิกใช้งานและการลบ" จำนวนมาก ข้อความเหล่านี้ไม่ได้มีไว้แค่โชว์ แต่สามารถส่งผลเสียต่อธุรกิจของคุณได้จริง ๆ
บทสรุป: เบื้องหลังบรรทัดโค้ดคือวิวัฒนาการทางเทคโนโลยี
หลายๆ คนบ่นว่า Google นั้น "ไร้จริยธรรม" แต่เมื่อมองในมุมที่สูงขึ้น จริงๆ แล้วนี่คือกระบวนการที่หลีกเลี่ยงไม่ได้ซึ่งผลักดันระบบนิเวศเว็บทั้งหมดให้ก้าวไปข้างหน้า
การกำจัดคุณลักษณะเก่าๆ และการบังคับให้นักพัฒนาปฏิบัติตามมาตรฐานถือเป็นการวนซ้ำของอารยธรรมทางเทคโนโลยี
หากเรายังคงเข้ากันได้กับไวยากรณ์ที่ล้าสมัยทั้งหมด ไม่ช้าก็เร็ว ส่วนหน้าก็จะกลายเป็นหม้อที่ไม่สมบูรณ์และทรุดโทรม
ดังนั้นเมื่อเราซ่อมแซมหลุมเล็กๆ นี้ เราก็ได้มีส่วนร่วมใน "การเคลื่อนไหวทำความสะอาดของอารยธรรมแห่งเทคโนโลยี"
ในอีกไม่กี่ปีข้างหน้า ข้อผิดพลาดที่คล้ายคลึงกันนี้จะยิ่งเพิ่มมากขึ้น และทางออกเดียวคือต้องปรับตัวให้ทันยุคสมัยและปฏิบัติตามกฎระเบียบ
สรุปสุดท้าย
- คอมพิวเตอร์สามารถรันได้ แต่ Android ทำไม่ได้ เพราะว่า
<script language="javascript">ไม่สนับสนุนอีกต่อไป - จาก โครเมียม 119 Android Chrome เป็นผู้นำในการข้าม
languageคุณลักษณะ<script>ชิ้น. - วิธีแก้ปัญหาคือ: ใช้
<script>或<script type="text/javascript">. - หลังจากแก้ไขแล้ว ให้รีเฟรชแคช และปัญหาจะถูกคืนค่า
- นักพัฒนาควรใส่ใจกับการอัปเดตเบราว์เซอร์อยู่เสมอ และพัฒนาให้มีนิสัยการเขียนโค้ดในลักษณะมาตรฐาน
ดังนั้น ครั้งต่อไปที่คุณพบข้อบกพร่องแปลกๆ ที่คอมพิวเตอร์ทำงานได้ดีแต่โทรศัพท์ใช้งานไม่ได้ คุณอาจลองคิดดูดังนี้: มี "สิ่งที่เหลืออยู่จากศตวรรษที่แล้ว" ซ่อนอยู่ในโค้ดของคุณหรือไม่
หวังว่า บทความ "ทำไมโค้ด JS ถึงทำงานล้มเหลวใน Android Chrome? สาเหตุที่ไม่ทำงานและวิธีแก้ไขด้วยการคลิกเพียงครั้งเดียว!" ที่แชร์บนบล็อกของ Chen Weiliang ( https://www.chenweiliang.com/ ) จะเป็นประโยชน์กับคุณ
โปรดแชร์ลิงก์บทความนี้ได้ตามสบาย: https://www.chenweiliang.com/cwl-33236.html
