7

我有一个链接(锚点),它附加了一个 href 以导航到特定的 URL,例如“www.bla.com”。

<a href='http://www.bla.com' />

我还有一个click附加到链接的处理程序,它执行一些操作,然后在同一窗口中打开一个 html 视图。一切都运行良好。

但是,当用户使用“ctrl+click”在新选项卡/窗口中打开链接时,单击处理程序似乎优先并在同一窗口中打开 html 视图。但我想保留“ctrl+click”行为并允许用户在新选项卡/窗口中打开链接(就像普通链接一样)。我怎么能那样做?

提前致谢!

4

4 回答 4

8
function process(e){
   var evt = e ? e:window.event;
   if(evt.ctrlKey)
      alert("ctrlClicked");
}​

如果按下控制键,evt.ctrlKey 将返回 true,您可以在“if”块中编写您的条件,我仅针对 chrome 和 ff 进行了测试。

于 2012-11-07T03:55:01.927 回答
1

也许是这样的?

function onclick(e){
   var event = e ? e:window.event;
   this.target = event.ctrlKey?"_blank":"_self";
}​
于 2012-11-07T04:45:15.127 回答
0

如果在单击发生时按下了控制键(或等效键) ,则关联的单击事件对象将其ctrlKey属性设置为。true检查事件对象,如果控制键被按下,不要做“HTML 视图”的事情。

<a href="#" onclick="alert(event.ctrlKey);">Click me!</a>

但是,如果用户以其他方式激活链接,您可能会或可能不会收到点击事件。

例如

  1. 右键 -> “在新标签页/窗口中打开” - 无点击事件(Firefox、IE)
  2. 选项卡聚焦链接,按回车 - 调度点击事件(Firefox,IE)
于 2012-11-07T03:42:45.050 回答
-2
<a target="_blank" href='http://www.bla.com' />

将 target="_blank" 添加到锚标记中。

于 2012-11-07T03:25:42.227 回答