用 Javascript 重定向到一个网页

  1. JavaScript 使用 location.href() 重定向网页
  2. JavaScript 使用 location.replace() 重定向网页
  3. JavaScript 使用 location.assign() 重定向网页
  4. JavaScript 通过动态创建锚元素来重定向网页
  5. 结论

JavaScript 中有多种方法可以重新路由用户。这取决于业务要求,该站点应具有哪种重定向行为。你可以通过以下方式重定向用户:

  1. location.href()
  2. location.replace()
  3. location.assign()
  4. 动态创建锚元素

JavaScript 使用 location.href() 重定向网页

location 接口与 DocumentWindow 对象一起使用进行重定向。通常,window.location.href 返回当前页面的 URL。例如,如果运行以下代码,你将看到页面 URL:

console.log(window.location.href)

输出:

"https://www.delftstack.com/"

诀窍是通过为 window.location.href 分配一个不同的 URL 来替换此 URL。这将使浏览器加载 URL 指定的页面,从而重定向到该页面。就网站历史记录堆栈而言,此方法更改当前参考 URL。以下代码将导航到 DelfStack 的操作方法页面。

window.location.href = "https://www.delftstack.com/howto/";

备注

  1. 加载新的 URL 后,可通过浏览器后退按钮访问较旧的网页。
  2. 这是最常用的重定向方法

JavaScript 使用 location.replace() 重定向网页

如果你希望永久地移至网页,请使用 location.replace。区别在于,location.replace 将用新的 URL 替换当前的 URL。因此,用户将无法返回到先前的 URL。就浏览器历史记录堆栈而言,该方法会弹出最后一个网页 URL,并将 URL 推送到值中。

window.location.replace("https://www.delftstack.com");

执行此操作将加载 https://www.delftstack.com 网站。

备注

  1. 我们建议仅在必要时使用此方法。
  2. 无法使用此方法返回上一链接。因此,这可能不是良好的用户体验。

JavaScript 使用 location.assign() 重定向网页

location.replace() 一样,assign() 方法也具有以下区别:当前链接保留在浏览器历史记录中。因此,用户将能够使用浏览器后退按钮返回上一页。此方法还将目标 URL 作为参数。

window.location.assign("https://www.delftstack.com");

JavaScript 通过动态创建锚元素来重定向网页

在较旧的浏览器中,尤其是版本 8 或更低版本的 Internet Explorer,不支持位置界面。因此,我们动态创建锚标签(<a>),并使用目标 URL 设置 href 属性。如前所述,锚标签是一个被动元素,需要用户交互才能调用它。因此,在代码中触发了 click 事件,以使重定向生效。

let targetURL = 'https://www.delftstack.com';
let newURL = document.createElement('a');
newURL.href = targetURL;
document.body.appendChild(newURL);
newURL.click();

在这里,我们通过以下方式实现重定向:

  1. 创建锚标签元素 document.createElement('a');
  2. 使用新 URL newURL.href = targetURL 设置 href 属性
  3. 使用 document.body.appendChild(newURL) 将动态创建的标签附加到 DOM 节点
  4. 最后,通过模拟用户点击 newURL.click() 来调用它。

浏览器将加载新的 URL。

结论

根据业务需求,最好在用户进入维护不足的网站网页时使用 meta 刷新方法来重定向用户。如果导航旨在基于用户单击,则使用锚标签非常普遍。我们可以使用 JavaScript 中 locationwindow.location.hrefwindow.location.assign(),以编程方式将用户发送到新的 URL。