Nếu bạn là tên miền chéo, chỉ cần đặt src trở lại cùng một url sẽ không luôn luôn kích hoạt tải lại, ngay cả khi vị trí băm thay đổi.
Gặp vấn đề này trong khi xây dựng thủ công các nút iframe của Twitter, sẽ không làm mới khi tôi cập nhật các url.
Các nút như Twitter có dạng:
.../tweet_button.html#&_version=2&count=none&etc=...
Vì Twitter sử dụng đoạn tài liệu cho url, việc thay đổi hàm băm / đoạn không tải lại nguồn và các mục tiêu nút không phản ánh nội dung được tải ajax mới của tôi.
Bạn có thể nối thêm một tham số chuỗi truy vấn để buộc tải lại (ví dụ: "?_=" + Math.random()
nhưng điều đó sẽ lãng phí băng thông, đặc biệt là trong ví dụ này khi cách tiếp cận của Twitter đặc biệt cố gắng kích hoạt bộ đệm.
Để tải lại thứ gì đó chỉ thay đổi bằng thẻ băm, bạn cần xóa phần tử hoặc thay đổi src
, đợi luồng thoát ra, sau đó gán lại. Nếu trang vẫn được lưu trong bộ nhớ cache, điều này không cần phải nhấn mạng, nhưng sẽ kích hoạt tải lại khung.
var old = iframe.src;
iframe.src = '';
setTimeout( function () {
iframe.src = old;
}, 0);
Cập nhật : Sử dụng phương pháp này tạo ra các mục lịch sử không mong muốn. Thay vào đó, hãy xóa và tạo lại phần tử iframe mỗi lần, nút này giữ cho nút back () này hoạt động như mong đợi. Cũng tốt đẹp để không có bộ đếm thời gian.