JavaScript window.open()按住Ctrl点击仍在新标签打开问题问询
问题原因
这是浏览器的原生默认机制:当用户按住Ctrl(Windows/Linux平台)或Command(Mac平台)键点击触发window.open调用时,浏览器会强制忽略弹窗配置参数,将目标页面在新标签页中打开,匹配普通用户按住修饰键快速打开新标签的操作习惯。
解决方案
在点击事件回调中捕获事件对象,检测到对应修饰键按下时先阻止浏览器默认行为即可。
同时你原代码中window.open的参数写法存在错误:所有窗口特性配置(宽度、高度、工具栏显隐等)需要合并拼接在第三个字符串参数中,你之前将status、toolbar配置放在第四个参数的位置是不会生效的,修改后的完整代码如下:
$(document).ready(function(){ $('#start').on('click', function(e){ // 阻止按住Ctrl/Command键时浏览器默认打开新标签的行为 if (e.ctrlKey || e.metaKey) { e.preventDefault(); } window.open('webURL',"mywindow", "width="+screen.availWidth+",height="+screen.availHeight+",status=1,toolbar=0"); }); });
内容的提问来源于stack exchange,提问作者Bhanu Pratap
相关产品推荐
相关产品推荐

