फ़ायरफ़ॉक्स html
स्तर पर अतिप्रवाह रखता है, जब तक कि विशेष रूप से अलग तरह से व्यवहार करने के लिए स्टाइल नहीं किया जाता है।
इसे फ़ायरफ़ॉक्स में काम करने के लिए, उपयोग करें
$('body,html').animate( ... );
काम करने का उदाहरण
CSS समाधान निम्नलिखित शैलियों को सेट करने के लिए होगा:
html { overflow: hidden; height: 100%; }
body { overflow: auto; height: 100%; }
मुझे लगता है कि जेएस समाधान कम से कम आक्रामक होगा।
अपडेट करें
नीचे बहुत सारी चर्चा इस तथ्य पर केंद्रित है कि scrollTop
दो तत्वों के एनिमेशन से कॉलबैक को दो बार लागू किया जा सकता है। ब्राउज़र-डिटेक्शन सुविधाओं का सुझाव दिया गया है और बाद में हटा दिया गया है, और कुछ यकीनन दूर की कौड़ी हैं।
यदि कॉलबैक बेकार है और कंप्यूटिंग शक्ति की बहुत आवश्यकता नहीं है, तो इसे दो बार फायर करना एक पूर्ण गैर-मुद्दा हो सकता है। यदि कॉलबैक के कई इनवॉइस वास्तव में एक समस्या है, और यदि आप फीचर-डिटेक्शन से बचना चाहते हैं, तो यह लागू करने के लिए अधिक सीधे-आगे हो सकता है कि कॉलबैक कॉलबैक के भीतर से केवल एक बार चलाया जाए:
function runOnce(fn) {
var count = 0;
return function() {
if(++count == 1)
fn.apply(this, arguments);
};
};
$('body, html').animate({ scrollTop: stop }, delay, runOnce(function() {
console.log('scroll complete');
}));