Internet Explorer có hỗ trợ PushState và thay thếState không?


140

Có ai biết nếu Internet Explorer hỗ trợ history.pushState()history.replaceState()các phương thức để thao túng lịch sử trình duyệt không? Xem xét những điều này chỉ đang được triển khai trong Firefox 4, tôi không nín thở, nhưng có ai biết liệu họ có đến IE9 không?


3
Thật sự thất vọng nếu IE9 không thêm cái này.
Eric Wahlforss

18
Đối với những gì đáng để History.js cung cấp cùng một API HTML5 trong khi làm giảm đáng kể bất kỳ trình duyệt nào không hỗ trợ nó (bao gồm hỗ trợ cho dữ liệu và tiêu đề và chức năng thay thếState). Sử dụng điều đó có nghĩa là bạn sẽ không phải thay đổi mã của mình cho các thay đổi IE9.
balupton

2
Mặt khác, một số lập luận chống lại việc rơi trở lại băm. danwebb.net/2011/5/11/it-is-about-the-hashbangs
David Johnstone

1
@CHiRiLo: Bạn cần bao gồm một tham chiếu đến jQuery . Đây là một thư viện javascript từ Google được sử dụng rộng rãi và sẽ giúp cuộc sống của bạn dễ dàng hơn rất nhiều khi làm việc với javascript trong các trang web của bạn.
kinh ngạc

5
Google không phải là nhà phát triển chính cho jQuery (có thể nó đã đóng góp); mặc dù nó lưu trữ nó trên CDN.
trojjer

Câu trả lời:


196

Có lẽ trang web tốt nhất cho thông tin tương thích trình duyệt là CanIUse . Đây là phần về lịch sử .

Tóm tắt - IE9: không , IE10: có (kể từ khi xem trước nền tảng 3)

Ứng cử viên phát hành đầu tiên của IE9 (phát hành ngày 10 tháng 2 năm 2011) không hỗ trợ history.pushState hoặc history.replaceState. Nói chung, không có tính năng mới nào được thêm vào sau khi sản phẩm đến giai đoạn RC nên rất khó có khả năng IE9 cuối cùng sẽ hỗ trợ các phương thức này.

Microsoft có một cái nhìn tổng quan tốt cho các nhà phát triển các tính năng mà IE9 có.

Cập nhật: Internet Explorer 9 đã được ra mắt (vào ngày 14 tháng 3 năm 2011) và chắc chắn không hỗ trợ history.pushState()hoặc history.replaceState().

Cập nhật 2: Bản xem trước nền tảng hiện tại của IE10 vẫn không hỗ trợ PushState / thayState .

Cập nhật 3: Bản xem trước nền tảng 3 của IE10 hỗ trợ API lịch sử! Chi tiết


Cho đến hôm nay, lịch sử IE10 có một lỗi khiến nó trở nên vô dụng, sự kiện popstate không kích hoạt. Chi tiết tại đây: stackoverflow.com/questions/14698299/
Mạnh

17

IE9 không hỗ trợ nó.

Tuy nhiên, bạn có thể sử dụng một công việc xung quanh bằng cách sử dụng Polyfill để có được chức năng - History.js https://github.com/browserstate/history.js .

Modernizr thực hiện tốt công việc liệt kê các Polyfills HTML 5 tại đây https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills .

Thông báo trước là nó sẽ thêm một chuỗi truy vấn vào URL của bạn trong các trình duyệt chỉ hỗ trợ các tính năng HTML 4.


như các ý kiến ​​trong câu hỏi trên, popstate không kích hoạt trong IE10
Mandeep Jain

History.js là một giải pháp tốt nếu bạn phải hỗ trợ IE 9 trở xuống, nhưng đó là 23KB, được rút gọn. Đó là rất nhiều cho chỉ hỗ trợ một vài phương pháp.
Neil Monroe


0

Btw bạn có thể nhận được lỗi như vậy vì lý do đường dẫn tuyệt đối trong PushState (). Khi tôi đặt lỗi đường dẫn tương đối đã biến mất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.