window.location是非阻塞操作吗?

时间:2015-12-01 21:11:50

标签: javascript

在处理缺陷时,我遇到了window.location行为,这与我的理解不同。在此问题之前,我认为为 window.location 分配值会阻止其他操作并继续重定向。

// Try to answer the questions before you run this script on JSFiddle.
// 1. Which site is going to load as a result of redirect method - apple.com or mashable.com?
// 2. Will the console log 'script added' print in console?
function redirect(url) {
  var el = document.createElement('script');
  var head = document.getElementsByTagName("head")[0];
  var content = "window.location.href='"+url+"'";

  el.innerHTML = content;

  head.appendChild(el);
}

console.log('adding scripts');
redirect('http://apple.com');
redirect('http://mashable.com');
console.log('script added');

我试图查找解释此行为但无法找到任何内容的文档。任何详细解释window.location的文档或文章都会很有用。

1 个答案:

答案 0 :(得分:0)

在Javascript中,设置window.location.href通常是非阻止操作。

当DNS解析新页面时,您仍然可以运行Javascript操作。因此,如果您在此之前更改location.href,则表示您已开始此过程。

您可以在 WHATWG: Living HTML - HTML Standard.

中了解{J}预期在Javascript中执行的window.location(具体为window.location.assign)的方式

设置window.location对象后,网络浏览器会启动 Location-object navigate Location-object-setter navigate 子例程。