मुझे लगता है कि यह एक पुराना सवाल है, लेकिन मुझे लगता है कि मुझे इसके लिए एक अच्छा समाधान मिल गया है। समस्या यह है कि फैंसी बॉक्स बॉडी के ओवरफ्लो वैल्यू को बदल देता है ताकि ब्राउजर स्क्रॉलबार छुप सके।
डेव चुंबन बताते हैं, हम निम्न पैरामीटर जोड़कर ऐसा करने से फैंसी बॉक्स बंद कर सकते हैं:
$('.image').fancybox({
padding: 0,
helpers: {
overlay: {
locked: false
}
}
});
लेकिन, अब हम अपने फैंसी बॉक्स विंडो को देखते हुए मुख्य पृष्ठ को स्क्रॉल कर सकते हैं। यह पृष्ठ के शीर्ष पर कूदने से बेहतर है, लेकिन यह शायद वह नहीं है जो हम वास्तव में चाहते हैं।
हम अगले मापदंडों को जोड़कर सही तरीके से स्क्रॉल करने से रोक सकते हैं:
$('.image').fancybox({
padding: 0,
helpers: {
overlay: {
locked: false
}
},
'beforeLoad': function(){
disable_scroll();
},
'afterClose': function(){
enable_scroll();
}
});
और इन कार्यों को गैलमबलाज़ से जोड़ें। देखें: अस्थायी रूप से स्क्रॉलिंग को अक्षम कैसे करें?
var keys = [37, 38, 39, 40];
function preventDefault(e) {
e = e || window.event;
if (e.preventDefault) e.preventDefault();
e.returnValue = false;
}
function keydown(e) {
for (var i = keys.length; i--;) {
if (e.keyCode === keys[i]) {
preventDefault(e);
return;
}
}
}
function wheel(e) {
preventDefault(e);
}
function disable_scroll() {
if (window.addEventListener) {
window.addEventListener('DOMMouseScroll', wheel, false);
}
window.onmousewheel = document.onmousewheel = wheel;
document.onkeydown = keydown;
}
function enable_scroll() {
if (window.removeEventListener) {
window.removeEventListener('DOMMouseScroll', wheel, false);
}
window.onmousewheel = document.onmousewheel = document.onkeydown = null;
}