听起来可能很傻,但我需要这个功能。
一旦执行,我可以以某种方式取消javascript中的location.href ='url'吗?
例如点击按钮我正在用一些资源密集型页面更改当前页面,我想给用户一个选项,以便在下一页需要很长时间加载时可以取消它。
谢谢和问候
答案 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加载到底部。