กลับไปที่หน้าก่อนหน้าโดยไม่คำนึงถึงการเปลี่ยนแปลงในสตริงข้อความค้นหา
ฉันมีหน้าที่มีตารางที่ค้นหาได้ ฉันได้เขียนปุ่ม "ย้อนกลับ" เพื่อกลับไปที่หน้าก่อน:
<a href="javascript:history.back()">Back</a>
ตัวอย่างเช่น URL ของหน้าแรกของฉันคือ:
https://xxxxxx.com
ฉันเข้าสู่หน้าพร้อมตารางที่ค้นหาได้จากหน้าแรกของฉัน(หรือหน้าอื่น ๆ ) :
https://xxxxxx.com/data
เมื่อฉันทำการค้นหาล่วงหน้า URL จะกลายเป็น:
https://xxxxxx.com/data?search=*sth*
เมื่อฉันกดปุ่ม "ย้อนกลับ" URL จะกลายเป็น:
https://xxxxxx.com/data
สิ่งที่ฉันต้องการจริงๆคือ:
https://xxxxxx.com/
(หรือหน้าที่ผู้ใช้เข้ามาก่อน/data
)
ฉันจะเขียนจาวาสคริปต์ของฉันใหม่บนปุ่มค้นหาได้อย่างไรเพื่อให้ปุ่มย้อนกลับไปที่หน้าจริง
คำตอบ
แทนที่จะhistory.back()
ย้อนกลับไปทีละรายการคุณสามารถทำได้window.location.replace(window.location.host)
ซึ่งโหลดหน้ารูท
หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับwindow.location
:https://developer.mozilla.org/en-US/docs/Web/API/Window/location
แก้ไข:
หากคุณต้องการละเว้นพารามิเตอร์ URL คุณต้องเปลี่ยนวิธีไปที่หน้าอื่น
แต่window.history.pushState(...)
คุณควรใช้window.history.replaceState(...)
เมื่อการนำทางควรละเว้นเมื่อคลิกย้อนกลับ
อ่านเพิ่มเติมที่นี่ในหัวข้อนั้น: อะไรคือการแลกเปลี่ยนระหว่างประวัติศาสตร์ push และแทนที่?