2012-07-28 29 views
5

Tôi có một trang web nơi người dùng có khả năng hiển thị các điều khoản và điều kiện mà không cần tải lại trang, thông qua AJAX. Điều đó, trong chính nó, là không có vấn đề, tuy nhiên, tôi cũng đang cố gắng để đẩy một trạng thái lịch sử.Trạng thái đẩy lịch sử IE

Điều đó hoạt động tốt trong hầu hết các trình duyệt, ngoại trừ trong IE. Đối với một số lý do không thể giải thích, ở đó, nội dung được tải qua AJAX, nhưng cũng có một tab mới được mở bằng trang trước đó. Làm thế nào tôi có thể sửa lỗi này?

Bạn có thể xem ví dụ trên trang web này (http://galaxy-battle.de), hãy thử nhấp vào "T & C" trong hộp "Tham gia".

+0

Bạn có thể hiển thị cho chúng tôi mã thực hiện điều đó trong jsfiddle để dễ dàng phát hiện lỗi và gỡ lỗi không? –

+0

Ồ, xin lỗi, chỉ cần đọc nó. Gonna làm một chút. – arik

+0

Xin lỗi, nhưng tôi không thể nhận được lệnh pushState để làm việc trên jsfiddle, họ dường như đang chặn nó. – arik

Trả lời

10

IE9 và bên dưới doesn't support pushState. Bạn có ngoại lệ khi gọi đến dòng sau

window.history.pushState (null, null, pathFullPage);

SCRIPT438: Object không hỗ trợ tài sản hoặc phương pháp 'pushState' TERMS_AND_CONDITIONS, dòng 62 kí tự 21

Bạn có thể có thể hấp dẫn tìm kiếm trên một số cách giải quyết được thảo luận tại Emulate/polyfill history.pushstate() in IE

2

Cũ nhưng vẫn hiện câu hỏi? . Tôi chỉ muốn nói rằng tôi muốn giới thiệu không phải để thử mô phỏng pushState trên IE.

Thay vì đó, bạn có thể sử dụng một tính năng phát hiện:

  1. nếu history.pushState không phải là null (trình duyệt hỗ trợ pushState), bạn sử dụng nó và tải nội dung của bạn với javascript tiện lợi

  2. nếu history.pushState là null (trình duyệt không hỗ trợ pushState), bạn thay đổi url/theo liên kết và thực hiện thay đổi đầy đủ trang

Tất nhiên, điều này có nghĩa là IE < = 9 người dùng sẽ không có tất cả hình động thú vị mà người dùng khác có. Nhưng câu hỏi tôi muốn hỏi là: bạn có muốn xem trên các liên kết mạng tới trang web của bạn có chứa # không?

Người dùng có thể cho rằng ứng dụng của bạn hữu ích và dán liên kết tới ứng dụng đó trên web. Đó là mát mẻ, bởi vì nó mang đến cho bạn một số nước trái cây google. Bây giờ, nếu người dùng đó sử dụng IE và bạn sử dụng history.js, người dùng sẽ dán liên kết có chứa băm.

Điều này sẽ đánh bại việc lập chỉ mục thích hợp các trang công khai của ứng dụng của bạn và cũng sẽ trông xấu xí. Ý kiến ​​cá nhân của tôi là có một js hoạt hình hoặc lightbox cho người dùng IE không có giá trị những thương mại ra.

+1

không may yêu cầu kinh doanh không phải lúc nào cũng dưới sự kiểm soát trực tiếp của nhà phát triển. – jaydel

Các vấn đề liên quan