Thư mục bài viết
- 1 Gốc rễ của vấn đề: Không phải là bạn viết sai, mà là thời thế đã bỏ rơi bạn
- 2 Tại sao Android lại hành động trước?
- 3 Giải pháp: Hoàn thành trong ba giây
- 4 Đây thực chất là một sự "thanh lý"
- 5 Các nhà phát triển cần chú ý điều gì?
- 6 Kết luận: Đằng sau một dòng mã là sự tiến hóa của công nghệ
- 7 Tóm tắt cuối cùng
Bạn nghĩ rằng trang web vẫn ổn và mã JS ổn định như cũ, nhưng ngay khi bạn thay đổi phiên bản trình duyệt di động, trang web lại "đình công"?
Điều vô lý nhất là: máy tính vẫn chạy bình thường,AndroidNhưng điện thoại hoàn toàn không để ý đến bạn.
Đây không phải chuyện đùa, đây là sự cố về trình duyệt đang diễn ra âm thầm.
Gốc rễ của vấn đề: Không phải là bạn viết sai, mà là thời thế đã bỏ rơi bạn

Trên thực tế, khi hầu hết các nhà phát triển thấy hiện tượng này, phản ứng đầu tiên của họ là: Có lỗi cú pháp JS không? DOM chưa được tải? Hay quyền truy cập bị chặn?
Kết quả ra sao? Chẳng có kết quả nào cả. Thủ phạm thực sự hóa ra lại là dòng chữ cổ xưa kia:
<script language="javascript">
Dòng mã này đã phổ biến cách đây 20 nămVô hạn, có thể thấy trong tất cả các hướng dẫn.
Nhưng trong Chromium phiên bản 119Sau đó, Google đã nói lời tạm biệt với "ngữ pháp cổ xưa" này: miễn là bạn thấy language Trình duyệt sẽ chọn lọc bỏ qua các thuộc tính và thậm chí không thèm giải thích chúng.
Vì lý do tương thích, Chrome trên máy tính để bàn vẫn đang "xử lý tạm thời"; nhưng Chrome trên thiết bị di động Android là "người tiên phong" và ngay lập tức kích hoạt chiến lược dọn dẹp này.
Và nó xuất hiện như sau:Máy tính hoạt động tốt, nhưng điện thoại di động không hoạt độngVấn đề.
Tại sao Android lại hành động trước?
Một số người có thể hỏi: Tại sao Android Chrome lại được ra mắt đầu tiên?
Rất đơn giản, vì tốc độ nâng cấp của thiết bị đầu cuối di động nhanh hơn và Google đẩy thông tin nhanh như gửi phong bì đỏ.
在 Năm 2023 tháng 10 ngày 31Phiên bản Chrome 119 dành cho Android đã được đưa lên Google Play.
Mặc dù phiên bản dành cho máy tính để bàn cũng sử dụng nhân Chromium, nhưng thông thường vẫn phải "phòng ngừa" để tránh làm nổ tung đột ngột một số lượng lớn hệ thống nội bộ của công ty.
Vì vậy, nếu bạn vẫn đang sử dụng cụm từ "language=javascript", trên điện thoại Android, điều này tương đương với việc viết một mã trong suốt mà trình duyệt sẽ bỏ qua trực tiếp.
Giải pháp: Hoàn thành trong ba giây
May mắn thay, cách khắc phục vấn đề này cực kỳ đơn giản. Chỉ cần thay thế dòng này:
<script>
Hoặc trang trọng hơn một chút:
<script type="text/javascript">
Chỉ mất vài giây để sửa đổi và Android Chrome sẽ thực thi ngay lập tức.
Hãy nhớ rằng, sau khi sửa đổiBuộc làm mới bộ đệmNếu không, trình duyệt vẫn có thể đọc tệp cũ. Phương pháp này cũng đơn giản:
- Máy tính: Ctrl + F5
- Điện thoại: Cài đặt → Quyền riêng tư → Xóa bộ nhớ đệm
Sau khi làm mới, mã sẽ được khôi phục trong vài giây và trang sẽ bắt đầu chạy lại.
Đây thực chất là một sự "thanh lý"
Cuối cùng, vấn đề lần này không phải là vấn đề của JS mà làThời đại của mã kế thừa front-end.
Điều mà các nhà sản xuất trình duyệt cần làm rất rõ ràng: dần dần dọn dẹp cú pháp lỗi thời và buộc các nhà phát triển phải cập nhật.
Giống như đường cao tốc: trước đây xe ba bánh và máy kéo được phép chạy song song, nhưng bây giờ vì lý do an toàn, chúng phải được lái ra ngoài. language="javascript" Chiếc máy kéo đó không nên chạy trên làn đường nhanh.
Các nhà phát triển cần chú ý điều gì?
Sự việc này là lời nhắc nhở rất thực tế đối với chúng ta:
Tiêu chuẩn mã hóa thực sự quan trọng Mã mà bạn nghĩ là "hoạt động bình thường" có thể ngừng hoạt động ở một phiên bản nào đó.
Môi trường thử nghiệm phải theo kịp tốc độ Đừng chỉ nhấp chuột và đăng bài trên Chrome trên máy tính. Bạn phải kiểm tra trên thiết bị di động và các phiên bản trình duyệt khác nhau.
Theo dõi nhật ký cập nhật trình duyệt Mỗi lần Chromium được nâng cấp, sẽ có rất nhiều "Hủy bỏ và Xóa bỏ". Những điều này không phải là trang trí, nhưng thực sự sẽ hủy hoại doanh nghiệp của bạn.
Kết luận: Đằng sau một dòng mã là sự tiến hóa của công nghệ
Nhiều người phàn nàn rằng Google "không có đạo đức", nhưng nhìn từ góc độ cao hơn, đây thực sự là một quá trình tất yếu thúc đẩy toàn bộ hệ sinh thái Web phát triển.
Việc loại bỏ các thuộc tính cũ và buộc các nhà phát triển phải tuân theo các tiêu chuẩn chính là sự lặp lại của nền văn minh công nghệ.
Nếu chúng ta tiếp tục sử dụng các cú pháp lỗi thời, thì sớm muộn gì phần front-end cũng sẽ trở thành một mớ hỗn độn đổ nát.
Vì vậy, khi chúng ta sửa chữa cái hố nhỏ này, thực chất chúng ta đang tham gia vào một “phong trào làm sạch nền văn minh công nghệ”.
Trong vài năm tới, sẽ có ngày càng nhiều cạm bẫy tương tự và thuốc giải độc duy nhất làBắt kịp thời đại và nắm bắt các tiêu chuẩn.
Tóm tắt cuối cùng
- Máy tính có thể chạy nó, nhưng Android thì không, bởi vì
<script language="javascript">Đã lỗi thời. - 从 Chromium 119 Android Chrome dẫn đầu trong việc bỏ qua
languageThuộc tính<script>cái. - Giải pháp là: sử dụng
<script>或<script type="text/javascript">. - Sau khi sửa đổi, hãy làm mới bộ nhớ đệm và sự cố sẽ được khắc phục.
- Các nhà phát triển nên luôn chú ý đến các bản cập nhật trình duyệt và phát triển thói quen viết mã theo cách chuẩn hóa.
Vì vậy, lần tới khi bạn gặp phải lỗi lạ khiến máy tính hoạt động bình thường nhưng điện thoại lại không hoạt động, bạn cũng có thể nghĩ về điều này: Có phải có một "di tích từ thế kỷ trước" ẩn trong mã của bạn không?
Hy vọng Chen Weiliang Blog ( https://www.chenweiliang.com/ ) đã chia sẻ "Tại sao mã JS bị lỗi trong Android Chrome? Lý do không thực thi được tiết lộ và giải pháp chỉ bằng một cú nhấp chuột!", điều này có thể hữu ích với bạn.
Chào mừng bạn đến chia sẻ liên kết của bài viết này:https://www.chenweiliang.com/cwl-33236.html
Để khám phá thêm nhiều mẹo ẩn🔑, vui lòng tham gia kênh Telegram của chúng tôi!
Chia sẻ và thích nếu bạn thích nó! Những chia sẻ và lượt thích của bạn là động lực tiếp tục của chúng tôi!