Tôi có một số mã (được viết bởi một nhà phát triển khác) đang thực hiện tải trang AJAX bên trong WordPress (ví dụ: không tải lại trang) khi bạn nhấp vào mục điều hướng, làm mới AJAX vùng nội dung chính. Vấn đề của tôi là nó bị hỏng trong IE7 và tôi không biết bắt đầu từ đâu về gỡ lỗi.Nhận sự kiện hashchange để làm việc trong tất cả các trình duyệt (bao gồm IE7)
Các dòng mở ban đầu là
var queue = 0;
$('document').ready(function() {
window.addEventListener("hashchange", hashChange, false);
// Define window location variables
var windowHost = window.location.host,
windowHash = window.location.hash,
windowPath = window.location.pathname;
Nhưng tôi đã thay đổi chúng để làm cho addEventListener
có điều kiện về cơ sở cho dù phương pháp đó đã có mặt hay không. Một số nghiên cứu đã nói với tôi rằng phương pháp này không có sẵn trong các phiên bản IE cũ hơn (ví dụ 7 trong trường hợp của tôi). Ngoài ra, giao diện điều khiển gỡ lỗi IE7 đã xác định rằng đó là một phương thức không khả dụng, vì vậy điều đó khá rõ ràng. Tôi viết lại những dòng như sau, nhưng mã vẫn chưa làm việc:
var queue = 0;
$('document').ready(function() {
if(window.addEventListener) {
window.addEventListener("hashchange", hashChange, false);
}
else if (window.attachEvent) {
window.attachEvent("hashchange", hashchange, false);
}
// Define window location variables
var windowHost = window.location.host,
windowHash = window.location.hash,
windowPath = window.location.pathname;
Kịch bản đầy đủ ban đầu có thể được xem trong pastebin này: http://pastebin.com/Jc9ySvrb
+1 aha snap đã bỏ lỡ! – gideon
Trình nghe sự kiện bị ràng buộc chính xác ngay bây giờ, nhưng sẽ không làm bất cứ điều gì trong IE7, bởi vì nó [không được hỗ trợ] (http://caniuse.com/hashchange). [IE8 không hỗ trợ] (http://msdn.microsoft.com/en-us/library/cc891506 (v = vs.85) .aspx) sự kiện 'hashchange' mặc dù. Đối với IE7, bạn phải phát hiện hashchanges thông qua 'setInterval'. –
Vâng bạn chắc chắn kiếm được danh tiếng của bạn ở đây @RobW - cảm ơn một triệu. Bạn chỉ cần tiết kiệm cho tôi giờ, tôi thành thật không biết nếu nó có giá trị đi qua toàn bộ 'setInterval' điều. Trông giống như một cơn đau đầu lớn. – Brian