กลับไปที่หน้าก่อนหน้าโดยไม่คำนึงถึงการเปลี่ยนแปลงในสตริงข้อความค้นหา

Aug 17 2020

ฉันมีหน้าที่มีตารางที่ค้นหาได้ ฉันได้เขียนปุ่ม "ย้อนกลับ" เพื่อกลับไปที่หน้าก่อน:

<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)


ฉันจะเขียนจาวาสคริปต์ของฉันใหม่บนปุ่มค้นหาได้อย่างไรเพื่อให้ปุ่มย้อนกลับไปที่หน้าจริง

คำตอบ

3 MauriceNino Aug 17 2020 at 15:36

แทนที่จะ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 และแทนที่?