【问题标题】:Whats wrong with my mouseup code?我的 mouseup 代码有什么问题?
【发布时间】:2012-04-09 06:50:00
【问题描述】:

尝试检测左键单击与右键单击(不使用 jQuery!),我有以下代码

Javascript:

function cclick(e) {
   if (e.button == 1) {alert("hgbdygwea");}
   else {
      alert(e.button);
   }
}

HTML:

<a onmouseup="cclick()" ...> <img .../> </a> <!-- also tried cclick instead of cclick() -->

使用 Internet Explorer 9

【问题讨论】:

  • 有什么问题?检测 mouseup 事件是否失败?
  • 它没有提醒,当我在 html 中用 cclick 替换 cclick() 时,它说 .button 未定义
  • 试试onmouseup="cclick(event)"
  • 您没有将事件传递给回调函数
  • 如果您使用适当的事件侦听器,您可以这样做。如果您使用onclick,不知道该怎么办。

标签: javascript html internet-explorer right-click onmouseup


【解决方案1】:

您需要将事件对象传递给您的函数:

onmouseup="cclick(event);"

【讨论】:

    【解决方案2】:

    Quirksmode 写了一篇关于“Which mouse button has been clicked?”和his code works 主题的文章。

    【讨论】:

      【解决方案3】:

      以下是另一种方法

      function cclick() {
         var e = window.event;
         if (e.button == 1) {alert("hgbdygwea");}
         else {
            alert(e.button);
         }
      }
      

      并在不传递event的情况下调用如下函数。

      <a onmouseup="cclick()" ...> <img .../> </a>
      

      【讨论】:

      • 这仅适用于 Microsoft 浏览器。其他浏览器没有window.event
      • 当然,正如他所提到的,他需要在“Internet Explorer 9”上运行它
      【解决方案4】:

      我认为这段代码应该适合你。 e.button 并非对所有浏览器都有效(我清理了代码)。

      function cclick(e) {
          "use strict";
          e || window.event;
          if (e.which) {
              alert((e.which === 1) ? "hgbdygwea" : e.which);
          } else {
              alert((e.button === 1) ? "hgbdygwea" : e.button);
          }
      }
      
      <a onmouseup="cclick(event)" ...> <img .../> </a> <!-- also tried cclick instead of cclick() -->
      

      【讨论】:

      • 哪些浏览器是 e.which 的?我听说它是​​为 netscape 设计的,所以我不再理会它了,因为它不再流行了?
      猜你喜欢
      • 2011-07-28
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      • 2010-11-08
      相关资源
      最近更新 更多