如何使用JavaScript立即重定向并终止脚本执行?
如何让JavaScript立即终止脚本并跳转页面
这个问题我太熟了!你遇到的情况是因为设置window.location.href之后,浏览器并不会立刻中断当前脚本的执行——它会先把当前函数里剩下的同步代码跑完,才会开始加载新页面,所以那个after redirect的alert总是会弹出来。
下面是几种靠谱的解决方法:
方法1:使用return终止函数执行
这是最常用也最优雅的方式,在设置跳转后直接用return结束当前函数,后面的代码就不会执行了:
function onload() { alert('before'); window.location.href = 'http://google.com'; return; // 立刻终止函数,后面的代码不会运行 alert('after redirect'); // 这行永远不会执行 }
方法2:用location.replace()配合return
如果你不想让用户通过浏览器的“后退”按钮回到当前页面,可以用location.replace()代替location.href,同样要加上return来终止脚本:
function onload() { alert('before'); window.location.replace('http://google.com'); return; alert('after redirect'); }
注意:
replace()只是替换历史记录栈里的当前页面,它本身也不会立刻中断脚本,所以必须搭配return才行。
方法3:抛出错误(不推荐)
虽然可以通过抛出一个错误来强制终止脚本,但这种方式会在控制台抛出异常,影响用户体验和代码调试,除非万不得已不建议使用:
function onload() { alert('before'); window.location.href = 'http://google.com'; throw new Error('终止脚本以执行跳转'); alert('after redirect'); }
总结一下:最稳妥的方式就是在设置跳转后立刻用return结束当前函数,这样既不会有异常,又能保证后面的代码不会执行,浏览器也会尽快处理跳转请求。
内容的提问来源于stack exchange,提问作者Kyle B
相关产品推荐
相关产品推荐

