左键单击以激活oncl​​ick并右键单击以激活href

时间:2013-06-17 21:49:12

标签: javascript html ajax css3 onclick

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

<img src="http://localhost/img/img_1.png" id=1 onclick="say_hi(id)" href="/img_page_1/" alt="Aim Pic" width="230" height= "164" />

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

为什么我需要它,我想在主页中显示与图像相关的页面预览,通过bluring页面的其余部分(此处使用ajax加载say_hi函数中的图像页面的预览)以及当用户右键单击时我希望它感觉像一个正常的href,这样他就可以直接在其他标签页面打开页面而不是预览。

编辑: 简单来说,我希望声明/写/给出一些图像的链接,当右键单击时,该图像通常作为链接起作用(显示具有链接所有选项的上下文菜单),但它必须触发onClick事件(或运行一个左键单击时在javascript中运行。

谢谢。

2 个答案:

答案 0 :(得分:1)

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

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);

但是如果我没有误解你想做什么,这看起来就像是你的链接<a href="" onClick="clickHandler">description</a>

答案 1 :(得分:1)

删除了之前的回答以回复问题编辑。


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

<强> HTML /内嵌-JS:

<a href="/img_page_1/" onclick="left_click(id)">
  <img src="http://localhost/img/img_1.png">
</a>

首先,href不是图像上的有效属性 - 将其提供给锚点(<a>),然后您可以将其环绕图像。

只有左键单击才会触发您的功能,右键单击仍然具有默认行为。

<强>功能:

function left_click(id) {
  event.preventDefault(); // Prevents the default anchor action.
  // Rest of your function here.
}

这里我们阻止了锚点触发的默认行为 - 阻止链接转到另一个页面。

jsFiddle example.