Câu hỏi Một lần và cho tất cả, navigator.onLine làm gì?


Tôi đã nhìn thấy một nghìn bài viết mà ai đó đang hỏi làm thế nào để phát hiện kết nối internet trong javascript và luôn có một người nói để sử dụng navigator.onLine và một người khác nói rằng nó không đáng tin cậy và chỉ cho bạn biết nếu kết nối có sẵn, không nếu bạn đã kết nối.

Tóm lại, navigator.onLine sẽ cho tôi biết nếu người dùng không thể liên lạc với máy chủ do bảo hiểm kém ngay cả khi 3G / 4G và WiFi được bật và họ không ở chế độ trên máy bay hay bất kỳ thứ gì? Chỉ là vùng chết trung bình của bạn.


12
2017-10-25 20:06


gốc


developer.mozilla.org/en-US/docs/DOM/window.navigator.onLine - Mahn
labs.ft.com/2012/08/navigator-online-here-be-dragons - CodeReaper


Các câu trả lời:


Từ Bài viết MDN về navigator.onLine:

Trình duyệt thực hiện thuộc tính này khác nhau.

Trong Chrome và Safari, nếu trình duyệt không thể kết nối với mạng cục bộ (LAN) hoặc bộ định tuyến, trình duyệt sẽ ngoại tuyến; tất cả các điều kiện khác đều đúng. Vì vậy, trong khi bạn có thể giả định rằng trình duyệt đang ngoại tuyến khi nó trả về một giá trị sai, bạn không thể giả định rằng giá trị thực sự nhất thiết có nghĩa là trình duyệt có thể truy cập internet. Bạn có thể nhận được các mặt tích cực sai, chẳng hạn như trong trường hợp máy tính đang chạy phần mềm ảo hóa có các bộ điều hợp ethernet ảo luôn được "kết nối". Do đó, nếu bạn thực sự muốn xác định trạng thái trực tuyến của trình duyệt, bạn nên phát triển các phương tiện bổ sung để kiểm tra. Để tìm hiểu thêm, hãy xem bài viết về HTML5 Rocks, Làm việc tắt lưới.

Trong Firefox và Internet Explorer, việc chuyển trình duyệt sang chế độ ngoại tuyến sẽ gửi một giá trị sai. Tất cả các điều kiện khác trả về giá trị thực


12
2017-10-25 20:09



Vâng shucks. Đây sẽ là một công cụ tuyệt vời nếu nó hoạt động đáng tin cậy. Cảm ơn trích đoạn ngắn gọn. - jmease


Theo MDN, nó thay đổi trên trình duyệt để thực hiện.

https://developer.mozilla.org/en-US/docs/DOM/window.navigator.onLine

Tôi sẽ giả định với trình duyệt WebKit, nó không phải là một cách đáng tin cậy để biết rằng một trình duyệt có truy cập Internet, chỉ là một số hình thức truy cập mạng.


0
2017-10-25 20:08