Firefox偶尔会忽略鼠标事件

时间:2013-11-14 09:28:23

标签: javascript firefox onclick mouseevent

我正在编写一个JavaScript应用程序并遇到问题,在firefox上大约有5-10%的鼠标点击自定义按钮会被忽略。

用于设置点击处理程序的原型是

function Button(parent, styleClassName) {
    Element.call(this, parent, "div");
    this.setStyleClass(styleClassName);
}

Button.prototype = Object.create(Element.prototype);
Button.prototype.constructor = Button;

Button.prototype.setOnClick = function(handler) {

    this.domNode.handler = handler;

    // sporadically skipped
    this.domNode.onclick = function(event) {
        console.log("ocl: " + event.currentTarget.id);
        this.handler(event);
        if(event.preventDefault) event.preventDefault();
        event.stopPropagation();
    }

    this.domNode.ontouchstart = function(event) {
        console.log("ots: " + event.currentTarget.id);
        this.handler(event);
        if(event.preventDefault) event.preventDefault();
        event.stopPropagation();
    }
}

受影响的html元素的示例(事件处理程序正确分配给外部div):

<div style="position: absolute; overflow: hidden; visibility: visible; left: 291px; top: 4px; width: 34px; height: 34px;" id="LandscapeScreen0_pMain_dlg_Element0_btnCloseDialog">
  <svg style="position: absolute; overflow: hidden; visibility: visible; width: 32px; height: 32px; cursor: pointer;" id="LandscapeScreen0_pMain_dlg_Element0_btnCloseDialog_RefSVG0">
    <use href="#svg08"/>
  </svg>
</div>

其他一些信息:

  • 这些处理程序一旦设置,将永远不会被修改或删除
  • 甚至没有将日志消息写入控制台
  • 使用addEventListener()无法解决问题
  • 问题仅存在于Firefox(在v25.0上测试)
  • 最重要的是:即使是窗口也无法检索事件!

关于最后一点:我添加了这些行进行调试:

window.onclick=function(e){console.log("onclick0");};
window.addEventListener("click",function(e){console.log("onclick1");}, true);
window.addEventListener("click",function(e){console.log("onclick2");}, false);

每当按钮不检索鼠标事件时,窗口甚至都不会收到其中一个事件。所以不知何故,这些事件必须全局放弃!?

所以我需要的是提示这可能是导致这种行为的原因......当事件被跳过而不是时,它似乎是非确定性的。

感谢您的帮助!

0 个答案:

没有答案