我可以取消Javascript中的location.href吗

我可以取消Javascript中的location.href吗,javascript,dom-events,Javascript,Dom Events,这听起来可能很傻,但我需要这个功能 一旦执行location.href='url',我是否可以在Javascript中以某种方式取消它? 例如,单击按钮“我正在使用一些资源密集型页面更改当前页面”,我希望为用户提供一个选项,以便在下一个页面需要很长时间才能加载时可以取消它。是的,您可以。您可以使用该事件显示警报,用户可以确认或取消该警报。当用户取消时,页面导航将被取消 例如: window.addEventListener('beforeunload', (event) => { //

这听起来可能很傻,但我需要这个功能

一旦执行location.href='url',我是否可以在Javascript中以某种方式取消它?


例如,单击按钮“我正在使用一些资源密集型页面更改当前页面”,我希望为用户提供一个选项,以便在下一个页面需要很长时间才能加载时可以取消它。

是的,您可以。您可以使用该事件显示警报,用户可以确认或取消该警报。当用户取消时,页面导航将被取消

例如:

window.addEventListener('beforeunload', (event) => {
  // Cancel the event as stated by the standard.
  event.preventDefault();
  // Chrome requires returnValue to be set.
  event.returnValue = '';
});

请注意,并非所有浏览器都以相同的方式实现此功能,Chrome要求您在事件上设置
returnValue
属性以触发警报,即使HTML规范要求您调用
event.preventDefault()
触发它。

在卸载页面之前,@Prutswonder建议的是采取操作的唯一方法。在卸载旧页之前,无法加载新页。这是最常见/最直接的解决方案

如果您确实需要在当前页面中加载新页面,则可以使用frames/iframes

取一页,两个iFrame相互重叠

页面可以控制2个内部框架=>内部框架可以通知已完全加载的页面。(在onLoad事件中)如果加载了,页面可以将iFrame放在顶部


如果用户决定中止加载,则页面可以中止加载。将加载iFrame保留在底部。

您的意思是希望能够查看页面加载是否需要很长时间,然后取消?执行location.href后会发生事件,而widnow.onbeforeuload当前页面在加载下一页之前保持可见。用户可以按键盘上的Escape键取消下一页加载。我希望使用javascript实现这个功能。首先也是最重要的一点:这不起作用,是吗?它应该是
返回确认(“Foobar”)@middus你试过了吗?打开控制台,粘贴代码并尝试切换页面。你说的完全错了。。。普鲁茨旺德所说的是正确的!如果你不相信,试试看