<table width="357" height="309" border="1">
  <tr>
    <td width="568"><input type="text" name="textfield" id="textfield" wlm_text="text_4" /></td>
    <td width="38" colspan="2">&nbsp;</td>
  </tr>
  <tr>
    <td><input type="submit" name="button" id="button" value="提交" wlm_text="text_1"  onclick="ok()"/></td>
    <td width="38" colspan="2">&nbsp;</td>
  </tr>
  <tr>
    <td><input type="file" name="fileField" id="fileField"  /></td>
    <td width="38" colspan="2">&nbsp;</td>
  </tr>
</table>
for (var i = 0; i< document.all.length;i++)
{
  e=window.event;
  document.all[i].attachEvent('onmousedown',function(e){
  if (e.button==2)//如果是右键单击
  {
     alert(e.srcElement.tagName);
  }
  });
}
我的本意是,网页加载完毕了。我把所有元素都绑定右键单击事件,当我鼠标右键哪个元素就取得这个元素的信息。然而当我右键单击网页某个元素的时候,他会弹出好几次。说明代码被执行好几次。这不是我想要的,只要返回一次就行了。说不通啊,应该我右键一次就执行一次,这家伙右键一次执行好几次。我确定我右键的时候不可能同时选择了多个元素啊。

解决方案 »

  1.   

    不用写加载完毕事件。
    </html>
    <script>
    在html结束标签后直接写代码就行
    </script>
      

  2.   

    1.你的代码 不跨浏览器 ,可以参考http://blog.csdn.net/xiaofan_sap/article/details/8509745  绑定事件参考:http://blog.csdn.net/xiaofan_sap/article/details/8508325分析下你的问题:弹出好几次 ,明显是 由于事件冒泡机制导致的(由于你是ie模型绑定事件,它只支持冒泡机制)。所以 最简单的就是  在 alert后面 return  false (试一下 )
      

  3.   

    呵呵 冒泡的概念 你去网上 查查看 ,
     alert(e.srcElement.tagName);
                        e.cancelBubble = true;你试试管用么  ,最好写 跨浏览器的代码 ,对你有好处 ~