我知道这是浏览器的默认行为(在新选项卡中打开),但有什么技巧可以克服它们吗?不使用其他事件处理程序,例如<a>
的onmousedown/onmouseup?尝试打开:window.open(url);
有必要在需求规范中进行说明。
if (e.ctrlKey){
window.open(url,'_blank')
}
它将在新选项卡中打开url。在点击事件中检查ctrl
密钥
$(".yourLink").bind('click', function(e){
e.prevenDefault();
if (e.ctrlKey){
window.open(url,'_blank');
}
});
编辑
如果你想在新窗口中打开,指定宽度和高度如下
window.open(url,'_blank', "height=255,width=255");
实际上,它与CTRL键有关,看起来像是Chrome中的一个bug,它将其作为默认行为,甚至调用了e.preventDefault()。为了欺骗浏览器,您必须使用setTimeout函数退出侦听器堆栈。
$(".yourLink").bind('click', function(e){
if (e.ctrlKey){
var openWindow= function(){
window.open(url,'name','width=' + screen.width + ',height=' + screen.height + ',location=yes,scrollbars=yes,status=yes;');
}
setTimeout(openWindow, 500);
}
});
我们在"onclick";我们产品中的锚定标签。这是因为我们希望在导航到下一个屏幕时向URL添加其他参数。
无论如何,我们实施了";window.open()"同时保持";Ctrl";然而,在Chrome中,新选项卡上的javascript执行速度非常慢,并且在该选项卡存在的整个期间都保持这种状态。以下解决了问题:
setTimeout(function() {window.open(url);}, 250);
我采用了一个montra:;当有疑问时;铬。出于某种原因,它解决了很多不稳定的问题。不管怎样,希望这能有所帮助!