1.新窗口中打开页面的方式:

//a 链接
<a target="_blank" />//opener
window.open()

2.新窗口中打开页面会有两方面的问题:安全问题,性能问题;

2.1安全问题:

上面新窗口中打开页面的方式都会在新窗口中找到一个opener的对象。

那什么是opener(MDN:),简单来说,它是父窗口的窗口对象。如果新窗口和服窗口同域的情况下,可以直接拿到这个对象,不同域的情况下,浏览器是会禁止访问这个对象的。但是!!!还是可以通过window.opener.location=newurl的方式来重写父页面的url,这样当再次来到父窗口时,用户一般不会发现当前的父窗口已经改变,还会以为是原来的url页面,如果再次去输入用户名密码什么的,就会被非法盗窃,而用户又察觉不到。这就是安全问题。

2.2性能问题:

一般来说,chrome的每一个窗口就是一个单独的进程,一个进程包含多个线程。

然而通过a标签的target="_blank"属性或者window.open打开的心窗口会与父窗口共用进程和线程。

那这个原因是为什么呢?

因为opener里面有DOM信息。两个进程中同时hold住了DOM信息,在多线程下去合理控制DOM比较难, 于是就放在了一个进程里。目前这样的问题chrome和firefox都存在。

3.解决方式:

在a标签上添加这个noopener属性,在新打开窗口的opner置为空


<a  rel='noopener'/>// es6
let newWindow= window.open();
newWindow.opener = null;

聊聊新窗口打开页面的opener问题相关推荐

  1. router-link 返回上页 和 新窗口打开链接

    1.如果使用了Vue-router的话,就可以用 this.$router.go(-1) 实现返回: 2.如果没使用vue-router,就可以用 window.history.go(-1) 实现返回 ...

  2. html超链接怎么新建窗口打开,html超链接新窗口打开怎么写

    扩展回答 谁知道超链接新窗口打开的技巧有哪些 打开网页文件,在a里添加="new". 2.在IE里测试效果. 3.点击链接,新打开窗口加载网页内容览器总在一个新打开.未命名的窗口中 ...

  3. 图解 wp WordPress 文章 链接 在新窗口打开

    wp WordPress 文章 链接 在新窗口打开 因为wp默认是不在新窗口打开链接的,这对于我们这样习惯关窗口的人,用起来很不方便.其实改起来很简单,下面开始 一.打开外观,选择编辑 二.打开主题页 ...

  4. php新窗口打开链接,wordpress如何设置在新窗口打开链接

    WordPress里面几乎所有的链接都是默认在当前窗口打开,无论是站外链接还是站内链接.这样的设定无忧主机小编觉得很不合理.试想:在博客网页上看到一个感兴趣的链接,点击之后就离开你的博客了,想要返回还 ...

  5. 新窗口打开html页面,网页是选择新窗口打开还是原窗口打开?

    我本人挺喜欢原窗口打开的,如果需要打开新窗口一般是ctrl+鼠标左键,原本以为这个快捷键大家都会用呢,不过这一看法在上周改变.如果你还在纠结,可以看看本文. (主流浏览器都默认ctrl+点击=开新窗口 ...

  6. vue-router 设置路由在新窗口打开页面

    一. <router-link>标签实现新窗口打开: 官方文档中说 v-link 指令被 <router-link> 组件指令替代,且 <router-link> ...

  7. vue-router 如何在新窗口打开页面

    1. <router-link>标签实现新窗口打开: 官方文档中说 v-link 指令被 <router-link> 组件指令替代,且 <router-link> ...

  8. js jquery新窗口打开的几种方式

    js jquery新窗口打开的几种方式 第一种:创建一个form表单,通过表单提交来实现新标签页打开. var form = document.createElement('form'); form. ...

  9. 点击链接新窗口打开页面

    列表页面,要是没有内页得话,就新窗口打开一个页面,-------要是有的话在点击列表页得就覆盖打开的窗口页面  使用的标签是  target="_block" 要是想一直打开在新窗 ...

最新文章

  1. ad16不能去除铺铜_净水处理-原水中的二氧化硅、铜和铁对锅炉运行的影响
  2. 起一个数的平方根_使用二分法计算一个数的算术平方根
  3. CA验证数字证书的有效性
  4. mysql适配器_MySQL适配器PyMySQL详解
  5. CentOS中升级openssl与卸载重装以及提示:error while loading shared libraries: libssl.so.1.1: cannot open shared ob
  6. [Z]POJ 计算几何入门题目推荐[转PKKJ]
  7. perl学习之:编译、执行与内存关系(转)
  8. 解决VS中无法使用scanf的问题
  9. WinForm中的ListBox和ComboBox的使用
  10. u-boot移植随笔:让u-boot shell支持tab、命令历史
  11. 程序调试经验~认证基盘测试程序初期调试~。
  12. AIX添加ASM的裸盘
  13. 并发编程学习之AQS抽象队列同步器
  14. javaweb小区物业管理系统设计与实现(毕业论文+程序设计+数据库文件)
  15. Elasticsearch 基本查询,term,match,
  16. 【硬石科技】电机系列教学(基于STM32)——舵机的控制
  17. PHP 报错 Resource temporarily unavailable 无法删除上传的资源
  18. pip install:Requirement already satisfied
  19. 业界红包玩法与技术方案总结
  20. Python获取指定时间范围内的工作日、假日日、法定节假日

热门文章

  1. python 编译器目录,python的编译器
  2. MAC本遭遇ARP攻击的处理办法
  3. 。韩国小孩儿MM 可爱烫发全过程
  4. 白帽 SEO 与黑帽 SEO 有什么区别?
  5. 关于计算机网络,你要知道的基础知识(典藏版)
  6. 【数据库连接池】could not inspect JDBC autocommit mode 问题处理
  7. 苹果电脑数据备份和数据恢复方法+时间机器
  8. java 千位分隔符_如何在Java中设置千位分隔符?
  9. mysql textfield_关于sql:Django CharField vs TextField
  10. html中购物车小球飞入的效果,vue项目中css3实现加入购物车小球抛物线飞入动画效果...