ฉันควรใช้ window.navigate หรือ document.location ใน JavaScript หรือไม่


177

วิธีที่ต้องการใช้ในการเปลี่ยนตำแหน่งของเว็บเพจปัจจุบันโดยใช้ JavaScript คืออะไร ฉันเห็นทั้ง window.navigate และ document.location ใช้แล้ว มีความแตกต่างในพฤติกรรมหรือไม่? มีความแตกต่างในการใช้งานเบราว์เซอร์หรือไม่?

คำตอบ:


220
window.location.href = 'URL';

เป็นการใช้งานมาตรฐานสำหรับการเปลี่ยนตำแหน่งของหน้าต่างปัจจุบัน


22
คุณมีการอ้างอิงเพื่อระบุว่า window.location.href เป็นการใช้งานมาตรฐานหรือไม่ และมาตรฐานนั้นใช้ได้กับเบราว์เซอร์ทั้งหมดหรือไม่ ดูเหมือนว่าคุณจะมีความรู้และมีการลงคะแนน 15+ (บวกกับคำตอบที่ยอมรับ) ช่วยให้มันมีอำนาจมากขึ้น แต่ฉันคิดว่ามันจะเป็นการดีกว่าถ้าได้ดูเอกสารจากทีมพัฒนาเบราว์เซอร์เพื่อสำรองข้อมูลการเรียกร้อง
Goyuix

6
@Goyuix มันอาจจะแม่นยำกว่าที่จะบอกว่าwindow.location.hrefเป็นการใช้งานที่สมบูรณ์ แต่ก็ window.locationทำสิ่งเดียวกันให้สำเร็จ ดูdocs.sun.com/source/816-6408-10/location.htm : "ถ้าคุณกำหนดสตริงให้กับlocationคุณสมบัติของวัตถุ JavaScript จะสร้างlocationวัตถุและกำหนดสตริงนั้นให้กับhrefคุณสมบัติ"
James Skidmore

3
ดูเหมือนว่าคนเหล่านี้ตัดสินใจว่ามันเป็นความชอบส่วนบุคคล: developer.mozilla.org/Talk:en/DOM/window.location หรือดูตัวอย่างอยู่ด้านล่างที่พวกเขาใช้เพียงwindow.locationแต่ที่ไม่จำเป็นต้องระบุทั้งทาง: developer.mozilla.org/en/window.location
James Skidmore

1
ฉันกำลังใช้สิ่งนี้เพื่อการพัฒนา Android ฉันมีปัญหาในการรับหน้าเปลี่ยนเส้นทางจาก JS ในเบราว์เซอร์เริ่มต้นของ Android ฉันพยายามwindow.location.href = 'URL';และwindow.location.assign('URL');วิธีที่ออกแบบมาสำหรับการโหลดหน้าใหม่ ข้อมูลเพิ่มเติมสามารถพบได้w3schools.com/jsref/obj_location.asp
philipp

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

11

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 ()วิธีการถ้าคุณต้องการที่จะเปลี่ยนเส้นทางไปยังหน้าใหม่และไม่อนุญาตให้ผู้ใช้นำทางไปยังหน้าเดิมโดยใช้ปุ่มย้อนกลับ


7

document.locatio n คือ (เลิก แต่ยังคงปัจจุบัน) อ่านอย่างเดียวคุณสมบัติสตริงแทนที่ด้วยdocument.url


6

window.location มีผลกับเฟรมด้วยเช่นกัน

แบบฟอร์มที่ดีที่สุดที่ฉันพบคือ:

parent.window.location.href

และที่แย่กว่านั้นคือ:

parent.document.URL 

ฉันทำการทดสอบเบราว์เซอร์ครั้งใหญ่และ IE ที่หายากที่มีปลั๊กอินหลายอันไม่ได้กำหนดด้วยรูปแบบที่สอง


โดยตรรกะนั้นจะไม่ top.window.location.href ยังดีกว่าไหม
Orwellophile

6

window.locationจะส่งผลต่อเป้าหมายเบราว์เซอร์ของคุณ document.location จะมีผลกับเบราว์เซอร์และเฟรม / iframe ของคุณเท่านั้น


4

window.navigateไม่รองรับในบางเบราว์เซอร์ดังนั้นจึงควรหลีกเลี่ยง วิธีอื่นใดที่ใช้คุณสมบัติตำแหน่งเป็นวิธีที่เชื่อถือได้และสอดคล้องกันมากที่สุด


2

window.location = "http://...";ฉันไปกับ ฉันได้รับการเข้ารหัส JavaScript ข้ามเบราว์เซอร์เป็นเวลาสองสามปีและฉันไม่เคยประสบปัญหาในการใช้วิธีการนี้

window.navigateและwindow.location.hrefดูเหมือนแปลกสำหรับฉัน


13
window.location ทำงานได้ แต่ไม่ถูกต้องทางเทคนิคเพราะ "ตำแหน่ง" เป็นวัตถุ
James Skidmore

16
แต่ทุกอย่างใน JavaScript เป็นวัตถุ :)
cllpse

1
ในขณะที่ทุกอย่างสวยมากเป็นวัตถุใน JavaScript การกำหนดสตริงให้กับวัตถุโดยทั่วไปไม่ได้ตั้งค่าให้กับหนึ่งในคุณสมบัติของมัน (เป็น window.location หรือ document.location ทำด้วยคุณสมบัติ href ของพวกเขา) แต่แทนที่จะแทนที่วัตถุที่มี เชือก ในกรณีนี้การเล่นโวหารเบราว์เซอร์ถูกเพิ่มเพื่อให้เข้ากันได้กับการใช้งาน (แปลก) ที่มีอยู่และเนื้อหาที่เป็นมรดก (และไม่ใช่แบบดั้งเดิม)
PhistucK

1

มีความแตกต่างไม่ได้จริงๆ; มีวิธีการทำแตกต่างกันประมาณ 5 วิธี แต่คนที่ผมเห็นส่วนใหญ่มักจะเป็นdocument.locationและwindow.locationเพราะพวกเขากำลังได้รับการสนับสนุนจากเบราว์เซอร์ที่สำคัญทั้งหมด (ฉันไม่เคยเห็นwindow.navigateรหัสส่วนตัวที่ใช้ในการผลิตดังนั้นอาจจะไม่ได้รับการสนับสนุนที่ดีมาก?)


document.location ไม่ทำงานในเบราว์เซอร์ทั้งหมด window.location ทำ
Philippe Leybaert

2
Firefox ไม่รองรับ window.navigate
Andrew Harry

0

การสนับสนุนdocument.locationก็ดีแม้ว่ามันจะเป็นวิธีที่เลิกใช้แล้ว ฉันใช้วิธีนี้มาระยะหนึ่งแล้วโดยไม่มีปัญหา คุณสามารถดูรายละเอียดเพิ่มเติมได้ที่นี่:

https://developer.mozilla.org/en-US/docs/Web/API/document.location


-5

คุณสามารถย้ายหน้าของคุณโดยใช้

window.location.href =Url;

3
นี้ไม่ได้จริงๆเพิ่มข้อมูลมากขึ้นแล้วได้รับการยอมรับและตอบ upvoted คูณ ...
สจ๊วร์ Siegler

3
คุณสามารถไปได้ไกลกว่านั้นและยืนยันว่าคุณเพียงแค่ลอกเลียนคำตอบที่ยอมรับ
Liam
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.