捕获"在新标签中打开链接"和"在新窗口中打开链接"事件

时间:2017-03-07 14:24:48

标签: javascript jquery

这是我的代码

<a href="javascript:void(0)" onclick="myFun('www.google.com');" onmousedown="myFun('www.google.com');">

每当我点击此链接时,我的函数都会被使用onclick事件调用。我添加了onmousedown事件以进行右键单击捕获。但问题是,在选择&#34;在新标签页中打开&#34; &#34;在新窗口中打开&#34; 选项之前,系统会调用此功能。当用户使用右键单击并在选择右键单击选项之前,将调用函数。我不想要这种行为。我想在用户实际选择&#34;在新标签中打开链接&#34; &#34;在新窗口中打开链接&#34; 选项时调用此功能。

我不想在状态栏中显示链接,也不想让用户复制链接地址。这就是我使用onclick和onmousedown事件的原因。

请帮帮我。感谢

2 个答案:

答案 0 :(得分:0)

听起来你正在寻找这样的东西,一旦上下文菜单启动就会改变链接:

function myFun2(url) {
   linkEl.href = url;
}

然后为a元素分配一个ID(即“linkEl”),删除onmousedown处理程序,并分配一个oncontextmenu处理程序,如:

oncontextmenu="myFun2('www.google.com');"

然后当启动上下文菜单时,链接将发生变化,因此如果选择“在新标签中打开”或“在新窗口中打开”,它将转到Google(在此示例中)而不是链接是什么设置为先前。

答案 1 :(得分:0)

您遇到的问题是使用onclick功能处理左右单击。另一种可能性是使用oncontextmenu(如上所述here)。

但我认为您需要以不同的方式处理右键单击和左键单击,因此onclick是正确的事件,只需检查它是主要(0)还是次要(2)mouseButton(请参阅here)。所以你的解决方案可能是这样的:

myFun(link) {
    var buttonPressed = instanceOfMouseEvent.button;
    if (buttonPressed == 0) {
         //Handle normal click
    } else if (buttonPressed == 2) {
         //Handle right click 
    }
}