【问题标题】:How to get the browser to navigate to URL in JavaScript [duplicate]如何让浏览器导航到 JavaScript 中的 URL [重复]
【发布时间】:2021-12-29 13:04:24
【问题描述】:

让网络浏览器使用 JavaScript 导航到您选择的 URL 的最佳(正确、现代、跨浏览器、安全)方法是什么?

【问题讨论】:

  • 不是重复的。另一个问题是关于重定向的。
  • 不是重复的,而是相关的。另一个问题没有这个简洁的答案来阐明我的问题的解决方案。
  • 确保使用“http://”或“https://”前缀

标签: javascript browser navigation


【解决方案1】:

这适用于所有浏览器:

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

如果您想更改页面而不反映在浏览器返回历史记录中,您可以这样做:

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

【讨论】:

  • 使用window.location = '...'window.location.href = '...' 的同义词 - 来自Window.location API
  • 如果您想避免重新加载整个页面(尽管这在技术上不被视为导航),请查看 history.pushState 和 history.replaceState。
  • 如果你想模拟点击一个链接,使用location.href 如果你想模拟一个HTTP重定向,使用location.replace 注意location.replace不会在会话历史中保留原始页面.
  • 你还应该提到window.location.assign('...'),它在功能上等同于window.location.href = '...'
【解决方案2】:

试试这些:

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

更多内容见此链接:other ways to reload the page with JavaScript

【讨论】:

  • 如果它解释了三者之间的区别,这个答案会更有帮助。另外,请参阅stackoverflow.com/help/how-to-answer 上的“为链接提供上下文”,因为该链接也不提供更多信息。
  • 如果您在 Node.js 中使用 TestCafe,那么您也可以这样做:await t.navigateTo('http://www.google.com');
  • location.assign 在我的情况下工作,谢谢:)
  • 有没有办法在任何这些或类似的调用之后等待页面完全加载?例如如果我在 Chrome 控制台中运行它,只有最后一页(谷歌)真正加载 window.location.href = 'google.com'; window.location.assign("w3schools.com"); window.location = 'google.com';
【解决方案3】:

【讨论】:

  • 很好的文档,但它说分配功能不会将当前地址保存在历史记录中,这是需要考虑的事情。没有正确或错误的方式,取决于程序员的需求
  • @OrBetzalel,我相信分配功能确实将当前地址保存在浏览器的历史记录中(当然,这可能因浏览器而异)。请参阅developer.mozilla.org/en-US/docs/Web/API/Location 的讨论,其中解释了window.location.replace() 不会将当前地址保存在历史记录中,但没有提及window.location.assign()。在我自己使用 Chrome 进行的测试(截至 2019 年 10 月的当前 Mac 版本)中,window.location.assign() 确实将当前地址保存在浏览器的历史记录中。
猜你喜欢
  • 1970-01-01
  • 2019-09-21
  • 2014-05-03
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
相关资源
最近更新 更多