使用上述瑞安的修复(在我的版本角slider.js线227),我设法让我的滑块按预期工作。不过,正如评论中提到的那样,它也为我打破了Firefox。为了固定火狐的问题,还需要进行以下更改角slider.js的内部:
79行:
变化:
sliderDirective = function($timeout) {
通过添加$window
paramater:
sliderDirective = function($timeout, $window) {
227线:
变化:
onMove = function() {
var eventX, newOffset, newPercent, newValue;
eventX = event.clientX || event.touches[0].clientX;
...
通过添加customEvent
参数来onMove()
功能和分配自己event
变量(myEvent
):
onMove = function(customEvent) {
var eventX, newOffset, newPercent, newValue,
myEvent = $window.event || customEvent;
eventX = myEvent.clientX || myEvent.touches[0].clientX;
...
这样,函数要么使用本地window.event
变量(存在于Firefox中)或库提供的变量。
317线:
最后,通过改变更新依赖声明:
qualifiedDirectiveDefinition = ['$timeout', sliderDirective];
包括$window
qualifiedDirectiveDefinition = ['$timeout', '$window', sliderDirective];
感谢您的回复。您提供的示例也适用于我的手机。我已经得出结论,这是我的应用程序与触摸支持有些冲突。我正在使用MEAN堆栈,我甚至用滑块创建了一个应用程序,而且我仍然没有获得触摸支持 - 指针在触摸时突出显示,但没有拖动。 – jeh
反正有jquery /另一个lib可能在这里造成冲突吗? – jeh
我能想到的两个常见冲突。 1 /你的页面有溢出,并且浏览器无法确定是要移动页面还是开始拖动滑块(尝试将css overflow:隐藏在body标签上)。 2 /在代码中的某处,touchmove上有一个事件处理程序,用于停止dom事件的传播。但是这个更难以发现。 –