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

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