解决了!行:var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
有所作为。
但现在我必须使用 Modernizer 检测设备并为桌面和触摸设备运行两个不同的脚本。
我不认为这是最好的做法。我怎样才能减少这个解决方案?
代码现在如下所示:
var deviceAgent = navigator.userAgent.toLowerCase();
var isTouchDevice = Modernizr.touch ||
(deviceAgent.match(/(iphone|ipod|ipad)/) ||
deviceAgent.match(/(android)/) ||
deviceAgent.match(/(iemobile)/) ||
deviceAgent.match(/iphone/i) ||
deviceAgent.match(/ipad/i) ||
deviceAgent.match(/ipod/i) ||
deviceAgent.match(/blackberry/i) ||
deviceAgent.match(/bada/i));
if (isTouchDevice) { /*Splitscreen for Touchdevices*/
$(function() {
var min = 300;
var max = 1200;
var mainmin = 300;
$('#split-bar').on( "touchstart", function(e){
e.preventDefault();
$(document).on( "touchmove", function(e){
e.preventDefault();
var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
var x = touch.pageX - $('#sidebar').offset().left;
if (x > min && x < max && touch.pageX < ($(window).width() - mainmin)) {
$('#sidebar').css("width", x);
$('#main').css("margin-left", x);
}
})
});
$(document).on( "touchend", function(e){
$(document).unbind("touchmove");
});
});
} else {
$(function() { /*Splitscreen for Desktop*/
var min = 300;
var max = 1200;
var mainmin = 490;
$('#split-bar').on( "mousedown touchstart", function(e){
e.preventDefault();
$(document).on( "mousemove touchmove", function(e){
e.preventDefault();
var x = e.pageX - $('#sidebar').offset().left;
if (x > min && x < max && e.pageX < ($(window).width() - mainmin)) {
$('#sidebar').css("width", x);
$('#main').css("margin-left", x);
}
})
});
$(document).on( "mouseup touchend", function(e){
$(document).unbind("mousemove touchmove");
});
});
}