में काम नहीं करती है, मुझे निम्नलिखित कोड के लिए कुछ अजीब व्यवहार का सामना करना पड़ रहा है।आलसी लोडिंग कभी-कभी कोणीय
function linkFunc(scope, element, attribute) {
var page = angular.element($window);
page.bind('scroll', function() {
var windowHeight = "innerHeight" in window ? window.innerHeight : document.documentElement.offsetHeight;
var body = document.body, html = document.documentElement;
var docHeight = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);
var windowBottom = windowHeight + window.pageYOffset;
if (windowBottom >= docHeight) {
scope.$apply(attribute.myDirective);
}
});
}
ऊपर कोड का एक टुकड़ा है, तो पृष्ठ के नीचे, तक पहुँच जाता है, तो इसकी पहुंच गया यह फोन करेगा जो कुछ भी समारोह बाँध myDirective
करने के लिए मुख्य मुद्दा यह है कि समय के सबसे अधिक है का पता लगाता है कि है आलसी लोडिंग काम करता है, और myDirective
को सफलतापूर्वक बुलाया जाता है। हालांकि कुछ बार आलसी लोडिंग काम नहीं करेगी, और मैं बग को पुन: उत्पन्न करने में सक्षम नहीं था।
मैंने अलग-अलग स्क्रीन आकार, विभिन्न ब्राउज़र की कोशिश की, लेकिन ऐसा लगता है कि बग यादृच्छिक रूप से होता है।
शायद किसी के साथ यह उनके साथ हुआ है, और मुझे एक दिशा बता सकता है?
संपादित करें:
अधिक जानकारी
मैं प्रयोग का एक सा के बाद बग पुन: पेश करने में सक्षम था।
असल में, जब ब्राउज़र के प्रतिशत में ज़ूम < 100 %
है, window.pageY
दशमलव मान है कि थोड़ा गलत है देता है जिसके कारण windowBottom
एक 0.9
जैसे को 0.1
द्वारा बंद किया जाना है।
console.log(windowBottom); // 1646.7747712336175
console.log(docHeight); // 1647
क्या कोई जानता है कि ऐसा क्यों होता है?
संपादित करें 2:
ऊपर व्यवहार भी गैर नियतात्मक है, लेकिन दशमलव हिस्सा सच है। !
यह कोणीय निर्देश तैयार करने का एक असामान्य तरीका है; यह विशिष्ट यूआई घटनाओं के लिए जावास्क्रिप्ट के निष्पादन को शुरू करने के लिए कोणीय के डिजाइन सिद्धांतों का मुकाबला करता है। – Claies
आपके पास स्क्रीन के नीचे क्रोम देव कंसोल नहीं है? मुझे लगता है कि यह समान कोड की ऊंचाई धारणा पर थोड़ा विचित्र प्रभाव डाल सकता है। – cYrixmorten
@cYrixmorten मेरे पास स्क्रीन के नीचे क्रोम देव कंसोल नहीं था, हालांकि मैंने कोशिश की थी, लेकिन व्यवहार अभी भी गैर निर्धारक नहीं है। – testing