Javascript 左键单击激活onclick,右键单击激活href

Javascript 左键单击激活onclick,右键单击激活href,javascript,html,ajax,css,onclick,Javascript,Html,Ajax,Css,Onclick,我有一个img标记as(这当然不是确切的语法) 这里我需要的是,当用户左键单击img时,我需要触发onClick,当用户右键单击img时,它必须像一个普通的href显示选项(“在新窗口中打开”等) 我之所以需要它,是因为我想通过模糊页面的其余部分,在主页中显示与图像相关的页面预览(这里使用ajax在say_hi函数中加载图像页面的预览),当用户右键单击它时,我希望它感觉像普通的href,以便他可以直接在其他选项卡中打开页面,而不是预览 编辑: 简单来说,我想声明/写入/提供一个指向某个图像的链

我有一个img标记as(这当然不是确切的语法)

这里我需要的是,当用户左键单击img时,我需要触发onClick,当用户右键单击img时,它必须像一个普通的href显示选项(“在新窗口中打开”等)

我之所以需要它,是因为我想通过模糊页面的其余部分,在主页中显示与图像相关的页面预览(这里使用ajax在say_hi函数中加载图像页面的预览),当用户右键单击它时,我希望它感觉像普通的href,以便他可以直接在其他选项卡中打开页面,而不是预览

编辑: 简单来说,我想声明/写入/提供一个指向某个图像的链接,该图像在右键单击时通常作为链接(显示包含链接所有选项的上下文菜单),但在左键单击时必须触发onClick事件(或运行javascript函数)


谢谢。

您需要通过事件对象的成员区分鼠标按钮:

var left, right;
left = mie ? 1 : 0;
right = 2;

var clickHandler = function (e){
    if(e.button === left){
       // do onClick stuff and return
    }
    else if(e.button === right){
       // show your context menu
    }
}, false);
但是,如果我没有误解您的意图,您可以将您的链接设置为

在回答问题编辑时删除了先前的答案


新的编辑要简单得多,请参见以下内容(使用内联JavaScript作为示例-这是一种不好的做法,不应在任何生产代码中使用-有关更多信息,请参见):

HTML/Inline JS:

<a href="/img_page_1/" onclick="left_click(id)">
  <img src="http://localhost/img/img_1.png">
</a>
function left_click(id) {
  event.preventDefault(); // Prevents the default anchor action.
  // Rest of your function here.
}
在这里,我们防止由锚触发的默认行为—停止链接,使您无法访问其他页面


href
不是
img
标记的有效属性。另外:您尝试了什么?谢谢您的回复,在这里,当用户单击元素时,我不想做任何事情。我只想让浏览器显示选项,如“在新选项卡中打开”等,这些选项通常在使用href时显示,但在我的情况下,我看不到“在新选项卡中打开”选项,我只能看到右键单击普通图像(仅在新选项卡中打开图像和其他一些与图像相关的内容)。我希望我现在更清楚一点。是的,我确实希望它以某种方式触发,简单地说,我希望函数在左键单击时运行,右键单击时,它必须像我右键单击链接一样运行。@MohanKrishna是的,我在回答中说,您只需根据您的情况调整它。您没有检查我的JSFIDLE吗?所以我要查找的是event.preventDefault();我尝试了与您在上述评论中所述相同的方法,但没有使用event.preventDefault();所以它在触发onclick事件的同时,甚至在导航,所以看起来它只是在导航,而不是在左键单击时触发onclick事件。非常感谢:)@MohanKrishna当然我为你提供了两个链接,非常有用:)