大多数现代浏览器支持命令ctrl+click
或command+click
或类似于新标签页或新窗口中的打开链接。
在应用程序中,我希望链接在单击时被禁用。但只是,如果目标是同一个窗口(例如,如果它在新选项卡中打开,我不希望该链接被禁用,因为再次单击它是合理的。)
我做了一些尝试并调试了在点击时创建的事件对象 - 但我找不到有关目标是新标签页还是新窗口的任何信息。
已知的解决方法:当然可以在单击特定链接时检查是否按下了某个键,这很简单 - 但由于这些命令因浏览器和操作系统而异,因此需要定义一个复杂的映射,确切地指出了用户配置的内容等等。
是否有可靠的方法来确定是否应在新标签页或窗口中打开位置?
答案 0 :(得分:4)
这里有一个有效的例子:http://jsfiddle.net/pioul/eCuNU/4/
只有在基于target="_blank"
属性的新标签/窗口中打开链接时,此脚本才允许点击链接。
<强> HTML:强>
<a href="http://google.fr" target="_blank">new window</a>
<a href="http://google.fr" target="_self">same window 1</a>
<a href="http://google.fr" target="">same window 2</a>
<强> jQuery的:强>
$("a").bind("click", function(e){
if($(this).attr("target") != "_blank"){
e.preventDefault();
}
});
修改强>
您可以像这样考虑ctrl +点击:
$("a").bind("click", function(e){
if($(this).attr("target") != "_blank"){
if(!e.ctrlKey){
e.preventDefault();
}
}
});
答案 1 :(得分:0)
有时,浏览器设置会在新标签页或同一窗口中打开链接。
您可以检查链接对象的目标属性。
<a href="http://your_link_to_page" target="_blank" >This open in new window</a>
使用javascript在页面加载时操作锚标记并检查目标属性。如果目标值设置为_blank,则启用它们,或者您可以在用户单击链接时执行此检查。
您可以使用一种机制查找单击链接时按下的CTRL。有一些资源,如this。你可以建立一个系统。
NOte:如果您使用的是JQuery,请使用不同的类来对必须检查的链接进行分类。并在准备状态或单击链接时禁用它们。
答案 2 :(得分:0)
您无法阻止浏览器在新标签页或窗口中打开链接。可能有(不可更改的)配置设置迫使它,或考虑鼠标手势:右键点击并向下移动将在Opera中打开一个新选项卡,我想这是不可检测的。
此外,强制浏览器在新窗口(target="_blank"
甚至window.open
)中打开选项卡被视为不良风格。你应该让用户选择他想做的事情。如果你真的想这样做,你也可以考虑window.onunload
这应该是最常用的。