2016-01-26 7 views
12

क्रोम में, यदि उपयोगकर्ता सभी एक्सएचआर स्क्रॉल कर रहा है और सेटटाइमआउट स्क्रॉलिंग स्टॉप तक देरी हो जाएगी और मुझे इसके लिए एक समाधान की आवश्यकता है। व्यवहार का वर्णन this blog post में किया गया है। हालांकि यह सुविधा मोबाइल स्क्रॉलिंग में मदद करती है, यह अनंत स्क्रॉल के लिए विनाशकारी है, जो मैं करने की कोशिश कर रहा हूं।एक्सएचआर/सेटटाइमआउट/क्रोम में स्क्रॉलिंग स्टॉप होने तक वादा नहीं करना

साक्ष्य यह हो रहा है यही कारण है कि: जब तक उपयोगकर्ता स्क्रॉल बंद हो जाता है

  • सभी अन्य ब्राउज़रों ठीक से काम, क्रोम एक खाली स्क्रीन दिखाता है।

  • स्क्रॉलिंग समाप्त होने तक नेटवर्क पैनल pending के रूप में सभी अनुरोध दिखाएगा, फिर वे सभी एक बार खत्म हो जाएंगे।

  • इसे एक स्निपेट में रखें, इसे चलाएं, फिर तुरंत स्क्रॉल करना शुरू करें। स्क्रॉल खत्म होने के बाद सेटटाइमआउट को तब तक नहीं बुलाया जाएगा।

var p = new Promise(function (resolve) { 
    setTimeout(function() { 
     console.log('resolving'); 
     resolve(); 
    }, 1000) 
}); 

p.then(function() { 
    console.log('DONE!!'); 
}) 
+0

'requestAnimationFrame()' का उपयोग कर करता है बजाय 'setTimeout()' मदद करने के लिए होता है? ब्लॉग पोस्ट यह स्पष्ट करता है कि क्रोम एनीमेशन और जीपीयू से संबंधित कार्यों को प्राथमिकता दे रहा है ताकि उपयोगकर्ता अनुभव (क्या _they_ कर रहे हैं) पीड़ित नहीं है। – arthurakay

+0

हाँ, यह करता है! हालांकि, यह एक्सएचआर के साथ मदद नहीं करता है, जो अनंत स्क्रॉल के लिए महत्वपूर्ण है। – sakabako

+0

मुझे यह सही मुद्दा है, मुझे जवाब मिलना अच्छा लगेगा। आपके लिए एक उपहार शुरू किया। –

उत्तर

1

के बाद से इस इंजन के साथ क्या करना है, मुझे नहीं लगता कि एक समाधान संभव है। इसके बजाय मैंने क्रोम टीम के साथ एक बग रिपोर्ट दायर की है। इस तरह के एक तुम संभाल रहे हैं (और सभी ट्रैफ़िक अवरोधित कर सकते हैं), या एक Web Worker के रूप में कार्य के लिए हैं जो -

https://bugs.chromium.org/p/chromium/issues/detail?id=661155

+0

ध्वनि क्लाउड और अन्य वेबसाइटों के पास यह समस्या क्यों नहीं है? इसे रोकने के लिए निश्चित रूप से एक तरीका है। –

+0

मुझे वास्तव में इसे पुन: उत्पन्न करने में परेशानी हो रही है। मैंने बस उपरोक्त टाइमआउट कोड के साथ एक त्वरित पृष्ठ चाबुक किया, और मुझे स्क्रॉल करते समय कंसोल आउटपुट मिलता है। –

+0

इसे एक्सएचआर जैसे कुछ के साथ आज़माएं। यही वह जगह है जहां मुझे समस्याएं हैं। –

5

अपने सटीक परिदृश्य और इच्छित ब्राउज़र समर्थन के आधार पर, मैं Service Workers कोशिश करता हूँ पृष्ठभूमि में do your AJAX

1

मेरा मानना ​​है कि यह इस क्रोम सुविधा से संबंधित हो सकता:

https://www.chromestatus.com/feature/5745543795965952 (निष्क्रिय घटना श्रोताओं)

क्रोम मोबाइल जब उपयोगकर्ता स्क्रॉल है पर काम कर रही बचने की कोशिश करता है, तो घटनाओं touchmove कर सकते हैं कभी कभी सुन देरी से चलने वाले हैंडलर और फायरिंग से टाइमआउट।

डेमो:
https://rbyers.github.io/scroll-latency.html
(हैंडलर Jank की जाँच करें और पेज के आसपास स्क्रॉल)

+0

मैंने देव उपकरण की जांच की जो कुछ अवांछित स्पर्श श्रोताओं को तीसरे पक्ष के lib से आते हुए दिखाते हैं।इस lib को अक्षम करने से मेरे स्क्रॉल समस्या हल हो गई। –

+0

मैंने "मूसहेल" ईवेंट में एक खाली ईवेंट श्रोता जोड़ा और यह मेरे लिए तय किया गया (यहां सुझाव के समान https://stackoverflow.com/a/47684257/6111857) – NDavis

संबंधित मुद्दे