Tôi có một ứng dụng trang đơn sử dụng Knockout.js để liên kết dữ liệu và Sammy.js để định tuyến URL phía máy khách (băm).Các tuyến đường Sammy.js không kích hoạt từ các liên kết ràng buộc Knockout trong IE10
Tôi gặp sự cố lạ trong Internet Explorer, tuy nhiên: đôi khi các liên kết, khi được nhấp, sẽ thay đổi URL trong thanh địa chỉ của trình duyệt, nhưng tuyến Sammy tương ứng sẽ không thực thi.
Nó không xảy ra mọi lúc (nhưng tôi có thể tái tạo liên tục lỗi) và nó chỉ xảy ra trong IE10 (Chrome hoạt động tốt mọi lúc). Nó dường như cũng liên quan đến Knockout, vì một tập hợp các liên kết được mã hóa cứng không thể hiện cùng một vấn đề.
Để minh họa, tôi đã bị tước đi mọi thứ nhưng tối thiểu để tái tạo vấn đề và tạo ra hai ví dụ jsbin:
Ví dụ 1 (với Knockout):http://jsbin.com/aretis/2/
Để xem các vấn đề, mở liên kết ở trên và nhấp vào "Bản ghi số 1", sau đó "Baz", sau đó "Ghi lại # 1" một lần nữa. URL cho bản ghi 1 sẽ xuất hiện trong thanh địa chỉ, nhưng tuyến đường cho bản ghi đó sẽ không được nối vào danh sách.
Ví dụ 2 (không có Knockout):http://jsbin.com/amivoq/1/
Trong ví dụ này, tôi có một danh sách tĩnh của liên kết kỷ lục thay vì một danh sách dữ liệu ràng buộc. Nhấp vào bất kỳ liên kết nào (theo thứ tự bất kỳ) sẽ dẫn đến tuyến đường đó được nối vào danh sách (vì nó nên).
Một lời nhắc nhở rằng những điều này phải được chạy trong IE để tái tạo sự cố.
Bất kỳ ý tưởng nào?
Tôi gặp sự cố tương tự trong ứng dụng ngay bây giờ với IE 10. Bạn có phương pháp kích hoạt được hiển thị không? Điều đó có được gọi khi chuyển đổi qua lại không? – Boone
Tôi đã giải quyết (có lẽ "làm việc xung quanh" là một cụm từ tốt hơn) vấn đề bằng cách chỉ ràng buộc với $ (cửa sổ) .on ("hashchange") và viết bộ định tuyến URL của riêng tôi. Nhu cầu của tôi rất đơn giản và tôi cho rằng tôi chỉ sử dụng khoảng 10% khả năng của Sammy.js. Tôi vẫn còn tò mò về nguồn gốc của vấn đề của tôi, vì vậy tôi để lại câu hỏi này. –
Bạn có thể tạo lại ví dụ 1 với sammy JS chưa được xác minh không? Tôi cũng đã tạo bộ định tuyến của riêng mình dựa trên SammyJS. @Matt Peterson, cảm ơn mẹo. Tôi đã không nhận thức được sự kiện 'hashchange'. Tôi đang kiểm tra các cửa sổ.vị trí với bộ hẹn giờ :). – Damien