2012-10-02 47 views
6

window'u kaydırıyorsam, kaydırma gerçekleşirken veya sonrasında window.setInterval ekli/yanmıyor. Başka biri aynı sorunu gördü mü? iOS 6 safari, setInterval tetiklenmiyor

Yani

... bu causeing ne olabilir

  • ?
  • Bunu düzeltmek için ne yapabilirim?
+0

Belki de, belleğin kaydedilmesi ve animasyonun daha hızlı ilerlemesini sağlamak için kaydırma yaparken tüm komut dosyalarını durduracaktır. Sadece tahmin ediyorum. –

+0

@Derek, hayır, diğer her şey, setInterval'dan hemen önceki satırın sonuna kadar gayet iyi görünüyor. – Johnny

+0

Bağlantı sağlayabilir misiniz? – Geuis

cevap

8

iOS, duyarlı olduklarını hissettirmek için kullanıcı dokunuşuna yanıt olarak neredeyse her şeyi durdurur. SetInterval sorunu biliniyor ve bir çözüm olarak görünmüyor. Sırasında

setInterval pauses in iphone/ipad (mobile Safari) during scrolling

DÜZENLEME

"dondurmak" kullanıcı ekranı serbest bırakır kez zamanlayıcı yakalamak olmaz. Cevapsız olaylar ertelenmiş değil, tamamen kayboldu (bir hata).

+0

sadece duraklatmaz, kaydırma işleminden sonra bile yanmaz. Duraklatma sorunu farklıdır, eğer setInterval sayfa kaydırma işleminden önce eklenirse olur. Benim durumumda, sayfa kaydırma sırasında eklenir. – Johnny

+0

Sağ. "Donma" sırasında, kullanıcı ekranı serbest bıraktığında zamanlayıcı kapanmaz. Ancak, bu süre içinde JS motorunun duraklatılması durumunda, olayınız * kaydırma sırasında * nasıl eklenir? Sadece kaydırma sırasında tetiklenip atılmadığından emin misiniz? – jimp

+0

Aynı problemim var. Kullanıcı kaydırırsa dokunma olayları alıyorum, gidelim ve tekrar dokunur. Ama setTimeout'um iptal edildi. Çirkin hacky çözümüm, her kaydırma olayından sonra bir temizlik yapıyor. (süper çirkin!) – Darwin

0

Tamamen emin değilim, ancak setInterval yerine setTimeout kullanabilirsiniz? Yine de setInterval'ı kullanmak genelde kötü bir uygulamadır.

var delay = 100; 
(function callee() { 
    setTimeout(callee, delay); 
})(); 
+0

'setInterval' kullanılmasının _generally_ kötü bir uygulama olduğunu (özellikle de requestAnimationFrame'in daha uygun olduğu yerlerde yeniden çizilmesi için aşırı şekilde kullanılabilir) konusunda hemfikir olduğumdan emin değilim. Ancak, arguments.callee'nin kötü bir uygulama olması için bir argüman yapılabilir (bu yüzden [katı moddan kaldırılmıştır] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/ Functions_and_function_scope/Strict_mode? redirectlocale = tr-tR & redirectslug = JavaScript/Strict_mode)). – Strille

+0

Teşekkürler, kodu güncelledi. – Nathaniel

+1

Sorun, setTimeout ile devam ediyor – TaylorMac

0

iOS6 Safari bir sayfadır iken oluşturulan zamanlayıcılar öldüren bir hata muzdarip kaydırma.

kaydırma bittikten

https://gist.github.com/3798925 sonra zamanlayıcılar yeniden oluşturarak kTmnh tarafından sağlanan bu soruna bir düzeltme yoktur.