क्या आप अनंत स्क्रॉलिंग को लागू करने का प्रयास कर रहे हैं?यदि आप हैं, माउस व्हील का उपयोग करने के बजाय स्क्रॉल बार खींचने का प्रयास करें। किसी कारण से, क्रोम माउस स्क्रॉल घटनाओं के साथ संघर्ष करना प्रतीत होता है। यदि स्क्रॉल बार ठीक काम करता है, तो पढ़ना जारी रखें।
इस पोस्ट में कुछ इसी तरह का अनुभव किसी के बारे में विस्तृत जानकारी प्रदान करता है - https://github.com/TryGhost/Ghost/issues/7934
मैं scroll
घटना है जो एक AJAX अनुरोध को ट्रिगर करेगा पर एक द्रष्टा संलग्न था। मैंने अनुरोध को थका दिया था और देख सकता था कि केवल 1 भेजा जा रहा था। मैंने देखा कि मेरा देव सर्वर कुछ एमएस के भीतर प्रतिक्रिया वापस कर देता है लेकिन क्रोम में 2 सेकंड की देरी होगी। कोई रेंडर नहीं, कोई एपीआई कॉल नहीं, कोई और स्क्रिप्ट निष्पादित नहीं है। लेकिन "सामग्री डाउनलोड" में 14kb के लिए 3 सेकंड लगेंगे। इस मुद्दे पर कोई अन्य ब्राउज़र नहीं था।
मैं setTimeout
के बजाय requestAnimationFrame
का उपयोग करके सुझावों को हल कर दूंगा। उस दृष्टिकोण से लगता है कि दृष्टिकोण "काम करता है" या हरा महत्वपूर्ण होता है, "सामग्री डाउनलोड" या नीले रंग के लिए इतना नहीं।
खोदने के कुछ घंटों के बाद, मैंने mousewheel
ईवेंट पर सशर्त रूप से e.preventDefault()
पर कॉल करने की कोशिश की और मेरे आश्चर्य के लिए, यह काम किया।
कुछ बातें ध्यान रखें:
1) मैं एपीआई कॉल करने के लिए mousewheel
घटना का उपयोग नहीं किया। मैंने थ्रॉटलिंग के साथ scroll
ईवेंट का उपयोग किया।
2) mousewheel
घटना गैर-मानक है और इसका उपयोग नहीं किया जाना चाहिए। https://developer.mozilla.org/en-US/docs/Web/Events/mousewheel
3) लेकिन इस मामले में, आपको क्रोम के कारण mousewheel
ईवेंट देखना और संभालना होगा। अन्य ब्राउज़र ईवेंट को अनदेखा करते हैं यदि वे इसका समर्थन नहीं करते हैं और मुझे अभी तक यह देखना है कि यह किसी अन्य ब्राउज़र में कोई समस्या नहीं है।
4) आप हर बार preventDefault()
पर कॉल नहीं करना चाहते हैं क्योंकि यह माउस के साथ स्क्रॉलिंग अक्षम करता है :) आप केवल इसे कॉल करना चाहते हैं जब deltaY
1 है यदि आप लंबवत स्क्रॉल का उपयोग कर रहे हैं। आप संलग्न छवि से देख सकते हैं कि deltaY
1 है जब आप मूल रूप से स्क्रॉल नहीं कर सकते हैं। mousewheel
ईवेंट को निकाल दिया गया है भले ही पृष्ठ स्क्रॉल नहीं कर सकता है। एक साइड नोट के रूप में, deltaX
है -0 जब आप लंबवत स्क्रॉल कर रहे हैं और deltaY
क्षैतिज स्क्रॉल करते समय -0 है।
मेरे समाधान:
window.addEventListener("mousewheel", (e) => {
if (e.deltaY === 1) {
e.preventDefault();
}
})
एकमात्र समाधान है कि मैं काम देखा है और मैंने नहीं देखा है यह उल्लेख किया है या कहीं और विचार-विमर्श किया गया है कि। मुझे आशा है कि वह मदद करेंगे।
console log of mousewheel event
मेरा मानना है कि इस क्रोम से संबंधित है सुविधा https://www.chromestatus.com/feature/5745543795965952 (निष्क्रिय घटना श्रोताओं) जब touchmove की तरह मोबाइल घटनाओं की बात सुनी जा रही हैं काम से बचने के लिए डिज़ाइन किया गया - जोड़ना किसी भी "mousewheel" घटना श्रोता ने मेरे लिए यह तय किया (भले ही कॉलबैक एक खाली कार्य था) – NDavis