我可以在javascript中取消location.href吗?

时间:2010-03-19 07:42:04

标签: javascript javascript-events

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

一旦执行,我可以以某种方式取消javascript中的location.href ='url'吗?

例如点击按钮我正在用一些资源密集型页面更改当前页面,我想给用户一个选项,以便在下一页需要很长时间加载时可以取消它。

谢谢和问候

2 个答案:

答案 0 :(得分:4)

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

示例:

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()来触发它。

答案 1 :(得分:1)

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

如果您仍然在当前页面时需要加载新页面,则可以使用框架/ iframe。

将一个包含2个iFrame的页面放在一起。

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

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