Javascript mousemove事件没有在Win7 / 8下的64位浏览器上捕获

时间:2013-04-27 11:12:05

标签: javascript cross-browser 64-bit mousemove

我遇到了一个问题,这个问题似乎只发生在Win7和8下的64位浏览器中。

我的应用程序使用“JQuery Slider”(参见http://egorkhmelev.github.io/jslider/),它在我可用的所有测试环境下都能正常工作 - 我在该平台上的Chrome,Safari和Firefox OS-X测试下开发, XP-SP3上的三个和IOS下的Safari。

某些用户(和客户)已经证明滑块不会在Windows 7下的Chrome,Firefox和Safari下移动。但是,使用Opera时,滑块的行为与预期一致。看起来公共因素是64位浏览器和64位MS OS。奇怪的是,滑块可以在IE下工作,但是为大学开发的应用程序不需要支持任何版本的IE。

我已经检测了响应mousemove事件的函数,并确定它不会触发问题系统。

绑定代码是:

this._bindEvent( $( document ), "move", function( event ){
    if( self.is.drag ){
        event.stopPropagation();
        event.preventDefault();
        self._mousemove( event );
    }
});

对我来说这看起来很合理(除了间距;-),并且在我所有的测试环境中都能正常工作。

我的问题:有没有人遇到类似问题,或者知道64位浏览器下的特殊要求?

我的应用程序位于PaperMiner.org.au,您无需注册即可尝试滑块。

1 个答案:

答案 0 :(得分:0)

已找到问题所在。 JQuery Slider响应点击和触摸事件。代码如下所示:

    this.supportTouches_ = 'ontouchend' in document;
    this.events_ = {
      "click": this.supportTouches_ ? "touchstart" : "click",
      "down": this.supportTouches_ ? "touchstart" : "mousedown",
      "move": this.supportTouches_ ? "touchmove" : "mousemove",
      "up"  : this.supportTouches_ ? "touchend" : "mouseup"
    };

在MS Windows 7和8下运行的64位版Chrome,Firefox和Safari上,此测试报告“true”,因此代码会等待永远不会触发的事件。真正的问题是需要更严格的测试,因此只有实际的触摸驱动设备才能绑定“touch *”事件。问题4817029有一些答案,但测试表明最近的浏览器版本否定了那里找到的解决方案。测试IOS或Android可能更可靠......