ฉันรู้ว่านี่เป็นคำถามเก่า แต่ฉันคิดว่าฉันพบทางออกที่ดีแล้ว ปัญหาคือกล่องแฟนซีเปลี่ยนค่าส่วนเกินของเนื้อหาเพื่อซ่อนแถบเลื่อนของเบราว์เซอร์
ดังที่ Dave Kiss ชี้ให้เห็นเราสามารถหยุดกล่องแฟนซีไม่ให้ทำสิ่งนี้ได้โดยการเพิ่มพารามิเตอร์ต่อไปนี้:
$('.image').fancybox({
padding: 0,
helpers: {
overlay: {
locked: false
}
}
});
แต่ตอนนี้เราสามารถเลื่อนหน้าหลักในขณะที่ดูหน้าต่างกล่องแฟนซีของเราได้ มันดีกว่าการกระโดดไปที่ด้านบนของหน้า แต่มันอาจไม่ใช่สิ่งที่เราต้องการจริงๆ
เราสามารถป้องกันการเลื่อนไปในทางที่ถูกต้องโดยการเพิ่มพารามิเตอร์ถัดไป:
$('.image').fancybox({
padding: 0,
helpers: {
overlay: {
locked: false
}
},
'beforeLoad': function(){
disable_scroll();
},
'afterClose': function(){
enable_scroll();
}
});
และเพิ่มฟังก์ชันเหล่านี้จาก galambalaz ดู: จะปิดใช้งานการเลื่อนชั่วคราวได้อย่างไร?
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;
}