วิธีที่ต้องการใช้ในการเปลี่ยนตำแหน่งของเว็บเพจปัจจุบันโดยใช้ JavaScript คืออะไร ฉันเห็นทั้ง window.navigate และ document.location ใช้แล้ว มีความแตกต่างในพฤติกรรมหรือไม่? มีความแตกต่างในการใช้งานเบราว์เซอร์หรือไม่?
วิธีที่ต้องการใช้ในการเปลี่ยนตำแหน่งของเว็บเพจปัจจุบันโดยใช้ JavaScript คืออะไร ฉันเห็นทั้ง window.navigate และ document.location ใช้แล้ว มีความแตกต่างในพฤติกรรมหรือไม่? มีความแตกต่างในการใช้งานเบราว์เซอร์หรือไม่?
คำตอบ:
window.location.href = 'URL';
เป็นการใช้งานมาตรฐานสำหรับการเปลี่ยนตำแหน่งของหน้าต่างปัจจุบัน
window.location.hrefเป็นการใช้งานที่สมบูรณ์ แต่ก็ window.locationทำสิ่งเดียวกันให้สำเร็จ ดูdocs.sun.com/source/816-6408-10/location.htm : "ถ้าคุณกำหนดสตริงให้กับlocationคุณสมบัติของวัตถุ JavaScript จะสร้างlocationวัตถุและกำหนดสตริงนั้นให้กับhrefคุณสมบัติ"
window.locationแต่ที่ไม่จำเป็นต้องระบุทั้งทาง: developer.mozilla.org/en/window.location
window.location.href = 'URL';และwindow.location.assign('URL');วิธีที่ออกแบบมาสำหรับการโหลดหน้าใหม่ ข้อมูลเพิ่มเติมสามารถพบได้w3schools.com/jsref/obj_location.asp
window.navigateเป็นวิธีการที่เป็นกรรมสิทธิ์ซึ่งใช้โดย Internet Explorer (ฉันทราบว่าเบราว์เซอร์อื่นเลียนแบบเพื่อความเข้ากันได้หรือไม่ Chrome ไม่ได้) document.locationหรือwindow.locationเป็นวัตถุมาตรฐาน (ดูข้อกำหนด HTML / HTML5 / DOM ต่างๆ) document.location = someURL(หรือwindow.location = someURL) อาจได้รับการสนับสนุนเนื่องจากรหัสดั้งเดิม วิธีการที่เหมาะสมที่จะทำคือหรือบางทีอาจจะdocument.location.href = someURL document.location.assign(someURL)
window.navigate ไม่รองรับในบางเบราว์เซอร์
ในจาวาสคริปต์มีหลายวิธีสำหรับการเปลี่ยนเส้นทางดูรหัสด้านล่างและคำอธิบาย
window.location.href = "http://krishna.developerstips.com/";
window.location = "http://developerstips.com/";
window.location.replace("http://developerstips.com/");
window.location.assign("http://work.developerstips.com/");
window.location.hrefโหลดหน้าเว็บจากแคชของเบราว์เซอร์และไม่ได้ส่งคำขอไปยังเซิร์ฟเวอร์ทุกครั้ง ดังนั้นหากคุณมีหน้าเก่าในแคชแล้วมันจะเปลี่ยนเส้นทางไปที่นั่นแทนการโหลดหน้าสดจากเซิร์ฟเวอร์
window.location.assign ()วิธีการเปลี่ยนเส้นทางหากคุณต้องการอนุญาตให้ผู้ใช้ใช้ปุ่มย้อนกลับเพื่อกลับไปที่เอกสารต้นฉบับ
window.location.replace ()วิธีการถ้าคุณต้องการที่จะเปลี่ยนเส้นทางไปยังหน้าใหม่และไม่อนุญาตให้ผู้ใช้นำทางไปยังหน้าเดิมโดยใช้ปุ่มย้อนกลับ
document.locatio n คือ (เลิก แต่ยังคงปัจจุบัน) อ่านอย่างเดียวคุณสมบัติสตริงแทนที่ด้วยdocument.url
window.location มีผลกับเฟรมด้วยเช่นกัน
แบบฟอร์มที่ดีที่สุดที่ฉันพบคือ:
parent.window.location.href
และที่แย่กว่านั้นคือ:
parent.document.URL
ฉันทำการทดสอบเบราว์เซอร์ครั้งใหญ่และ IE ที่หายากที่มีปลั๊กอินหลายอันไม่ได้กำหนดด้วยรูปแบบที่สอง
window.locationจะส่งผลต่อเป้าหมายเบราว์เซอร์ของคุณ document.location จะมีผลกับเบราว์เซอร์และเฟรม / iframe ของคุณเท่านั้น
window.navigateไม่รองรับในบางเบราว์เซอร์ดังนั้นจึงควรหลีกเลี่ยง วิธีอื่นใดที่ใช้คุณสมบัติตำแหน่งเป็นวิธีที่เชื่อถือได้และสอดคล้องกันมากที่สุด
window.location = "http://...";ฉันไปกับ ฉันได้รับการเข้ารหัส JavaScript ข้ามเบราว์เซอร์เป็นเวลาสองสามปีและฉันไม่เคยประสบปัญหาในการใช้วิธีการนี้
window.navigateและwindow.location.hrefดูเหมือนแปลกสำหรับฉัน
มีความแตกต่างไม่ได้จริงๆ; มีวิธีการทำแตกต่างกันประมาณ 5 วิธี แต่คนที่ผมเห็นส่วนใหญ่มักจะเป็นdocument.locationและwindow.locationเพราะพวกเขากำลังได้รับการสนับสนุนจากเบราว์เซอร์ที่สำคัญทั้งหมด (ฉันไม่เคยเห็นwindow.navigateรหัสส่วนตัวที่ใช้ในการผลิตดังนั้นอาจจะไม่ได้รับการสนับสนุนที่ดีมาก?)
การสนับสนุนdocument.locationก็ดีแม้ว่ามันจะเป็นวิธีที่เลิกใช้แล้ว ฉันใช้วิธีนี้มาระยะหนึ่งแล้วโดยไม่มีปัญหา คุณสามารถดูรายละเอียดเพิ่มเติมได้ที่นี่:
https://developer.mozilla.org/en-US/docs/Web/API/document.location
คุณสามารถย้ายหน้าของคุณโดยใช้
window.location.href =Url;