我正在尝试了解对location.href进行分配后事件的年表。 似乎赋值本身不会停止执行当前的js调用堆栈,因此可以连续尝试多个赋值。 such a code的语义是什么:
<!doctype html>
<script>
var h=location.href;
location.href="http://google.com";
location.href=h+"#ok";
</script>
是否可以保证浏览器会执行两个HTTP GET? 是否保证它们将按顺序排列? 浏览器会等到执行堆栈结束吗? 这两项任务是否会导致两个单独的“onblur”事件? 我注意到在Chrome中我的上述示例会导致broswer在地址栏中显示“vanisoft.pl/~lopuszanski/public/redirect_test.html”,然后重定向到谷歌,但如果我更改了最后一行是:
location.href=h;
然后有一个infinite loop。
如果有多个js会影响单页应用中的路由,那么这个问题非常实用。