使用上述瑞安的修復(在我的版本角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事件的傳播。但是這個更難以發現。 –