window.open target _self v window.location.href?

Reb*_*cca 60 javascript

我需要使用JavaScript重定向用户.哪种方法首选?

window.open("webpage.htm", "_self");
Run Code Online (Sandbox Code Playgroud)

要么

window.location.href = "webpage.htm";
Run Code Online (Sandbox Code Playgroud)

Jac*_*kin 70

肯定第二种方法是首选方法,因为您没有其他函数调用的开销:

window.location.href = "webpage.htm";
Run Code Online (Sandbox Code Playgroud)

  • 函数调用的开销?函数调用确实有成本,但我不确定它是否有任何相关性,我曾经期望现在的函数调用与所有实际用途的属性访问一样高效.在JVM上,随着V8的性能飞跃,我希望在这里能够做到这一点.我的分析在这里有问题吗? (4认同)
  • 显然,如果浏览器将 _action_ 作为设置的结果,这不是一个简单的属性。此外,与浏览器实际加载页面所做的任何事情相比,调用函数的开销只是杯水车薪。所以我不买这个论点。 (2认同)

Gar*_*ley 27

希望通过阅读本文来保存其他人.

我们遇到了基于webkit的浏览器的问题:

window.open("webpage.htm", "_self");
Run Code Online (Sandbox Code Playgroud)

如果我们有太多的DOM节点,浏览器会锁定并死掉.当我们将代码切换到以下接受的答案时:

location.href = "webpage.html";
Run Code Online (Sandbox Code Playgroud)

一切都很好.我们花了一段时间才弄清楚导致问题的原因,因为我们的页面定期无法加载的原因并不明显.


Fré*_*idi 20

正如其他人所说,第二种方法通常是首选.

然而,这两个代码片段并不完全相同:第一个实际设置window.opener为窗口对象本身,而第二个将保持原样,至少在Firefox下.


小智 6

您可以省略window并仅使用location.href. 例如:

location.href = 'http://google.im/';
Run Code Online (Sandbox Code Playgroud)