Câu trả lời:
Nếu tôi nhớ chính xác, hãy window.location.reload()tải lại trang hiện tại bằng dữ liệu POST, trong khi window.location.href=window.location.hrefkhông bao gồm dữ liệu POST.
Như được lưu ý bởi @ W3Max trong các bình luận bên dưới, window.location.href=window.location.hrefsẽ không tải lại trang nếu có một neo (#) trong URL - Bạn phải sử dụng window.location.reload()trong trường hợp này.
Ngoài ra, như được lưu ý bởi @Mic bên dưới, window.location.reload()sẽ có một đối số bổ sung skipCacheđể với việc sử dụng window.location.reload(true)trình duyệt sẽ bỏ qua bộ đệm và tải lại trang từ máy chủ. window.location.reload(false)sẽ làm ngược lại và tải trang từ bộ đệm nếu có thể.
Nếu bạn nói window.location.reload(true)trình duyệt sẽ bỏ qua bộ đệm và tải lại trang từ máy chủ. window.location.reload(false)sẽ làm ngược lại.
Lưu ý: defaultgiá trị cho window.location.reload()làfalse
window.location.href = window.location.hrefđã thực hiện thủ thuật.
location.reload()hoặc location.reload(false). Để làm mới hoàn toàn trang, sử dụng location.reload(true).
Sự khác biệt là
window.location = document.URL;
sẽ không tải lại trang nếu có một hàm băm (#) trong URL (có hoặc không có cái gì đó sau nó), trong khi đó
window.location.reload();
sẽ tải lại trang.
location.href = location.hrefcho là điều hiển nhiên, nhưng tôi chỉ nhận thấy hành vi chính xác đó và đã đến SO để truyền bá. Chỉ cần sử dụng location.reload()thay thế.
window.location.replace(window.location.pathname);
Nếu bạn thêm boolean true vào tải lại,
window.location.reload(true)nó sẽ tải từ máy chủ.
Không rõ mức độ được hỗ trợ của boolean này, W3Org đề cập rằng NS đã sử dụng để hỗ trợ nó
Có MIGHT có sự khác biệt giữa nội dung của window.location.href và document.URL - ít nhất được sử dụng để có sự khác biệt giữa location.href và tài liệu không chuẩn và không dùng nữa. Điều đó phải làm với chuyển hướng, nhưng điều đó thực sự là thiên niên kỷ qua.
Đối với mục đích tài liệu, tôi sẽ sử dụng window.location.reload () vì đó là những gì bạn muốn làm.
Đi qua câu hỏi này để nghiên cứu một số hành vi khác thường trong IE, cụ thể là IE9, đã không kiểm tra các phiên bản cũ hơn. Dường như
window.location.reload();
dẫn đến việc làm mới làm trống toàn bộ màn hình trong một giây, trong đó như
window.location = document.URL;
làm mới trang nhanh hơn nhiều, gần như không thể nhận ra.
Nghiên cứu thêm một chút và thử nghiệm với fiddler, dường như window.location.reload()sẽ bỏ qua bộ đệm và tải lại từ máy chủ bất kể bạn có vượt qua boolean với nó hay không, điều này bao gồm lấy tất cả tài sản của bạn (hình ảnh, tập lệnh, biểu định kiểu, v.v.) một lần nữa. Vì vậy, nếu bạn chỉ muốn trang làm mới HTML, window.location = document.URLnó sẽ trả về nhanh hơn nhiều và có ít lưu lượng truy cập hơn.
Một điểm khác biệt trong hành vi giữa các trình duyệt là khi IE9 sử dụng phương thức tải lại, nó sẽ xóa trang hiển thị và dường như xây dựng lại từ đầu, trong đó FF và chrome chờ cho đến khi chúng có được tài sản mới và xây dựng lại nếu chúng khác nhau.
Một điểm khác biệt trong Firefox (12.0) là trên một trang được hiển thị từ POST, tải lại () sẽ bật lên một cảnh báo và thực hiện đăng lại, trong khi việc gán URL sẽ thực hiện GET.
Google Chrome thực hiện NHẬN cho cả hai.
Sử dụng JSF, tôi hiện đang gặp sự cố với làm mới sau khi hết phiên: PrimeFaces ViewExpiredException sau khi tải lại trang và với một số điều tra tôi đã tìm thấy một điểm khác biệt trong FireFox:
Gọi window.location.reload()hoạt động như nhấp vào biểu tượng làm mới trên FF, nó thêm dòng
Cache-Control max-age=0
trong khi cài đặt window.location.hrefhoạt động như nhấn ENTER trong dòng URL, nó không gửi dòng đó.
Mặc dù cả hai đều được gửi dưới dạng GET, nhưng lần đầu tiên (tải lại) đang khôi phục dữ liệu trước đó và ứng dụng ở trạng thái không nhất quán.
từ kinh nghiệm khoảng 3 năm của tôi, tôi không thể tìm thấy sự khác biệt nào ...
chỉnh sửa: có, như một trong số họ ở đây đã nói, chỉ truyền một tham số boolean cho window.location.reload () là sự khác biệt. nếu bạn vượt qua đúng , thì trình duyệt sẽ tải một trang mới, nhưng nếu sai , thì phiên bản bộ đệm đã được tải ...
Trong trường hợp của chúng tôi, chúng tôi chỉ muốn tải lại trang trong webview và vì một số lý do, chúng tôi không thể tìm hiểu lý do! Chúng tôi thử hầu hết mọi giải pháp đã có trên web, nhưng bị mắc kẹt khi không tải lại bằng location.reload () hoặc các giải pháp thay thế như window.location.reload (), location.reload (true), ...!
Đây là giải pháp đơn giản của chúng tôi:
Chỉ cần sử dụng thẻ <a> với giá trị phân bổ "href" trống như thế này:
< a href="" ...>Click Me</a>
(trong một số trường hợp, bạn phải sử dụng "return true" khi nhấp vào mục tiêu để kích hoạt tải lại)
Để biết thêm thông tin, hãy kiểm tra câu hỏi này: Có phải một href href hợp lệ không?
window.location.href, điều này như đã cứu cuộc đời tôi trong webview từ Android 5.1. Trang không tải lại với location.reload () trong phiên bản này từ Android.