我遇到了一个问题,这个问题似乎只发生在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,您无需注册即可尝试滑块。
答案 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可能更可靠......