a标签慎用target=”_blank”
存在问题:
1:新打开的窗口可以通过window.opener获取到来源页面的window对象,即使跨域也可以,通过修改window.opener.location.href=’xxx’,指向另一个地址,这样新窗口可能会把原来的地址改了并进行页面的伪装来欺骗用户。
2:新打开的窗口与原窗口共用一个进程,若是新页面有性能不好的代码也会影响原页面。
解决方案:
1:加上rel=”noopener” 或者 rel=”noreferrer”,这样新窗口打开的window.opener就是null,而且会让新窗口运行在独立的进程里,不会拖累原来的页面的进程。(有些浏览器针对性能的优化即使不加,新窗口也会在独立进程打开,为了安全起见还是加一下比较好)
代码实验:
1 | // a 标签模拟点击跳转新页面 |