Gần đây khi nâng cấp một trang web WordPress cũ lên version 5.5, tôi nhận thấy có một lỗi javascript trong bảng console trên trình duyệt Chrome như sau: Uncaught TypeError: Cannot read property ‘msie’ of undefined.
Tôi đang sử dụng phiên bản mới nhất của các thư viện jQuery và nó vẫn gặp lỗi, tôi đã kiểm tra javascript của trang web và nó vẫn ở đó.
Nguyên nhân lỗi
Nội dung bài viết
Sau khi tìm hiểu, tôi đã biết được lý do gây ra lỗi: Uncaught TypeError: Cannot read property ‘msie’ of undefined.
Nhưng bạn có biết bản cập nhật WordPress 5.5 là phiên bản ngoài mong đợi hay không? Tuy vậy cũng không tránh khỏi các phần lỗi không mong muốn đối với cái wordpress plugin và themes.
Vấn đề lớn nhất trong đợt tối ưu version wordpress lần này là xóa jQuery Migrate 1.x. Và đó là nguyên nhân khiến một số trang web bị lỗi.
Theo trang WordPress cũng đã nói về Jquery Migrate Helper:
Với phiên bản WordPress 5.5 đợt này, phần jquery-migrate sẽ được tắt mặc định.
Điều này có thể dẫn đến các lỗ không mong muốn trong một số them hoặc plugin chạy mã cũ hơn.
Mặc khác, trong phiên bản mới của jQuery 1.9, phần jQuery.browser() đã được loại bỏ từ phiên bản này. Hình dưới đây là phần thông báo của thư viện này.
Cách khắc phục lỗi: Cannot read property ‘msie’ of undefined.
1 lỗi nhỏ nhưng đã chỉ trong vòng 1 khoảng thời gian ngắn, nó đã ảnh hưởng tới hơn 2,000 Plugins và 350 Themes. Nhưng những phần xung đột (conflict) đó cũng đã nhanh chóng có cách giải quyết. Sau đây có 2 cách:
Tải Plugin: Enable jQuery Migrate Helper
Hãy tải plugin này để giúp bạn khôi phục lại phần jquery trước đó, như vậy mọi thứ sẽ được giải quyết. Hãy nhớ là rằng nên cập nhật thêm các plugins.
Cách thủ công bằng code
Dưới đây là đoạn mã giúp bạn khắc phục lỗi trên. Hãy chèn đoạn mã Javascript này vào phần Header thông qua các plugin có sẵn như: Header and Footer Scripts
<script> jQuery.browser = {}; (function () { jQuery.browser.msie = false; jQuery.browser.version = 0; if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) { jQuery.browser.msie = true; jQuery.browser.version = RegExp.$1; } })(); </script>
Hy vọng bài viết này sẽ giúp bạn sửa được phần lỗi: Uncaught TypeError: Cannot read property ‘msie’ of undefined