我处于调试模式,所以我可以看到哪个页面被点击了。
当我拨打window.location
或window.location.replace(..)
时,它会转到该页面,然后返回原始页面!
这怎么可能?
解决方案是添加:
window.location.replace(...);
return false;
为什么return false
现在正常运作?
答案 0 :(得分:3)
如果此脚本发生在onclick
或onsubmit
事件上,则不会返回或返回true
表示浏览器应采取链接/表单的默认操作。所以,如果你有一个onclick
处理程序,如:
<a href="http://www.google.com/" onclick="window.location = 'http://www.yahoo.com/';">
然后浏览器将转到Yahoo,然后看到它应该执行链接的其他操作(导航到Google)。当您指示return false;
时,浏览器知道不执行下一个/默认操作。
<a href="http://www.google.com/" onclick="window.location = 'http://www.yahoo.com/'; return false;">
那么,return false;
为什么要这样做呢?
对于任何事件处理者,返回true
表示继续正常并返回false
表示停止尝试处理事件(prevents default handling and stops propagation),尽管有{{3} }}