东东东 陈煜东的博客

JS无法在非人为触发的事件下打开新窗口

本来想写个JavaScript测试脚本,自动打开新标签,去访问网页进行一个压力测试,因为JS需要去连接后台的数据,所以没办法使用ab这些工具去压测。看上去一个很简单的需求,却没办法自动实现。

使用window.open方法只能弹出一个小窗口,不能在新标签页中打开。这就有一个问题了,我当时打开的窗口有上百个,当达到一定数量后,整个chrome就崩溃了。原因我觉得应该是Windows对进程的使用空间有限制,打开一个标签后,chrome会给窗口分配一个新进程或者和其他老进程共用一个,这就会出现标签或者页面过多导致空间占用大,然后程序崩溃了。

后来想到了通过a标签,可以打开新的标签页,于是就对a标签进行事件的处理。发现同样的代码只有用户有click事件触发时,才会在新标签也中打开一个新窗口,如果使用setTimeout、setInterval这样的函数来调用,或者是在控制台里直接触发click是没办法在新标签也面中打开的,只能在小窗口中打开。也尝试了很多网络上说的方法,比如createEventtriggerdispatchEvent都不管用。

相关信息:之前看到一个文章,说Firefox等浏览器对event有一个新的属性event.isTrusted,可以查看一些这里还有这里

这里可能是浏览器对于打开新标签页有一些限制吧。不能让程序自动打开无数的标签,但是为什么可以打开新窗口却不能打开新标签页呢?

最后是通过chrome的一个插件New Tab Redirect来解决的,然后狂按ctrl+T来手工打开很多的新窗口。

相关资料

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: JS无法在非人为触发的事件下打开新窗口 – https://www.chenyudong.com/archives/js-open-link-with-tab-is-impossible-without-click-event.html

分类: Web 开发

移动开发SNS微信、QQ社交分享 » « laravel安装使用、目录权限设置

发表评论

邮箱(不会被公开)

*

Copyright © 2019 东东东 陈煜东的博客 粤ICP备13059639号-1

SITEMAP回到顶部 ↑