ReplaceState () so với pushState ()


Câu trả lời:


159

replaceState()sẽ thay đổi URL trong trình duyệt (tức là nhấn nút quay lại sẽ không đưa bạn quay lại)

pushState() sẽ thay đổi URL và giữ URL cũ trong lịch sử trình duyệt (tức là nhấn nút quay lại sẽ đưa bạn trở lại)


57

Từ liên kết của bạn

history.replaceState () hoạt động giống như history.pushState () ngoại trừ việc ReplaceState () sửa đổi mục nhập lịch sử hiện tại thay vì tạo một mục mới.

ReplaceState () đặc biệt hữu ích khi bạn muốn cập nhật đối tượng trạng thái hoặc URL của mục lịch sử hiện tại để đáp ứng với một số hành động của người dùng.

Nếu bạn chỉ muốn cập nhật mục nhập lịch sử, hãy sử dụng replaceState()cách sử dụng khác pushState(), thao tác này sẽ giữ mục nhập cũ và tạo mục mới. Chúng tương tự nhau nhưng cả hai đều có các hiệu ứng khác nhau nên tùy thuộc vào việc bạn có muốn thay thế hoặc tạo mục lịch sử mới hay không.

Hãy nghĩ về nó giống như tôi đang chia một bộ bài bằng cách đặt một lá lên trên lá kia (úp) và bạn chỉ có thể lấy lá trên cùng trong đống (tức là lá cuối cùng mà tôi đã chia). Giả sử tôi đặt một Jack of Hearts lên đống. Bây giờ cho thẻ tiếp theo nếu tôi sử dụng replaceState, vì vậy tôi lấy Jack of Hearts đó ra và đặt thẻ tiếp theo vào. Số lượng thẻ giống nhau vì chúng tôi vừa thay thẻ trên cùng. Nếu tôi đã sử dụng pushStatethay thế, tôi sẽ đặt thẻ tiếp theo lên trên Jack of Hearts (vì vậy bây giờ cả hai đều tồn tại trong đống và đống cao hơn một thẻ).

Hoán đổi các thẻ tương tự với các URL và đó là cách lịch sử URL được sửa đổi.


2
"history.replaceState () hoạt động giống như history.pushState () ngoại trừ việc ReplaceState () sửa đổi mục nhập lịch sử hiện tại thay vì tạo một mục mới." Trích dẫn này Tôi tìm thấy ở đây developer.mozilla.org/en-US/docs/Web/API/History_API . bạn có thể giải thích lịch sử trình duyệt toàn cầu là gì không. nó cho biết mục nhập được tạo trên lịch sử trình duyệt toàn cầu.
Raghu DV

"Lịch sử trình duyệt toàn cầu" có nghĩa là gì? @RaghuDV
stevemao

@keyboardP Awesome đã giải thích. Cảm ơn rất nhiều.
michael.zech
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.