1

我遇到了一个问题,似乎只有在 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 操作系统。奇怪的是,滑块在 IE 下工作,但为大学开发的应用程序不需要支持任何版本的 IE。

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

绑定代码是:

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

这对我来说看起来很合理(除了间距;-),并且在我所有的测试环境下都运行良好。

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

我的应用程序位于PaperMiner.org.au,您无需注册或进行任何操作即可试用滑块。

4

1 回答 1

0

The problem has been located. JQuery Slider responds to either clicks and touch events. The code looks like this:

    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"
    };

On 64 bit versions of Chrome, Firefox, and Safari running under a MS Windows 7 and 8, this test reports "true", so the code then waits for events which will never trigger. The real problem is the test which needs to be more rigorous so only actual touch driven devices bind the "touch*" events. Question 4817029 has some answers, but testing suggests recent browser releases have negated the solutions found there. Testing for IOS or Android might be more reliable...

于 2013-04-29T06:25:21.040 回答