ChatGPT解决这个技术问题 Extra ChatGPT

How to get the browser to navigate to URL in JavaScript [duplicate]

This question already has answers here: How do I redirect to another webpage? (58 answers) Closed 5 years ago.

What is the best (correct, modern, cross-browser, safe) way to get a web browser to navigate to a URL of your choice using JavaScript?

Not a duplicate. The other question is about redirection.
Not a duplicate, but related. The other question doesn't have this concise answer that clarified the solution to my problem.
Ensure you use the "http://" or "https://" prefix

P
Paolo Bergantino

This works in all browsers:

window.location.href = '...';

If you wanted to change the page without it reflecting in the browser back history, you can do:

window.location.replace('...');

Using window.location = '...' is a synonym of window.location.href = '...' - from Window.location API.
If you want to avoid reloading the whole page (though that would not technically be considered a navigation), look into history.pushState and history.replaceState.
If you want to simulate clicking on a link, use location.href If you want to simulate an HTTP redirect, use location.replace Note that location.replace does not keep the originating page in the session history.
you should also mention window.location.assign('...'), which is functionally equivalent to window.location.href = '...'.
E
Ethan

Try these:

window.location.href = 'http://www.google.com'; window.location.assign("http://www.w3schools.com"); window.location = 'http://www.google.com';

For more see this link: other ways to reload the page with JavaScript


This answer would be more helpful if it explained the difference between the three. Also, please refer to 'Provide context for links' at stackoverflow.com/help/how-to-answer, because the link doesn't provide any more info, either.
If you are using TestCafe with Node.js then you could also do: await t.navigateTo('http://www.google.com');
location.assign worked in my case, thank you :)
is there a way to wait for the page to full load after any of these or similar calls? e.g. if I run this in Chrome Console, only last page (google) ever truly loads window.location.href = 'google.com'; window.location.assign("w3schools.com"); window.location = 'google.com';
d
drac_o

It seems that this is the correct way window.location.assign("http://www.mozilla.org");

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

https://www.w3schools.com/js/js_window_location.asp

https://web.archive.org/web/20150307183711/https://jstricks.com/javascript-redirect-page-redirection/


Good documentation but it says that the assign function doesn't save the current address in the history and thats something to consider. There is no correct or incorrect way, depends on the programmer's needs
@OrBetzalel, I believe the assign function DOES save the current address in the browser's history (though of course that could vary across browsers). See discussion at developer.mozilla.org/en-US/docs/Web/API/Location, where it explains that window.location.replace() does NOT save the current address in history, but makes no such mention of window.location.assign(). In my own testing with Chrome (current Mac version as of Oct 2019), window.location.assign() DOES save the current address in the browser's history.