【发布时间】:2010-02-04 17:53:36
【问题描述】:
【问题讨论】:
【问题讨论】:
打开弹窗时隐藏body的滚动条
document.body.style.overflow = "hidden";
并在关闭弹出窗口时恢复
document.body.style.overflow = "visible";
【讨论】:
一种选择是在body 上临时将overflow 属性设置为hidden,这将消除滚动条,但在调整页面时会导致轻微闪烁。
另一个选择是点击$(window).scroll() 事件并从那里返回false。这也会导致一些闪烁,因为浏览器对 return false 语句的反应没有那么快。
最好的办法是将点击事件处理程序移动到一个单独的文件并在那里进行绑定:
$(function() {
$('.emailPost').click(function() {
$(window).scroll(function() { return false; });
pageTracker._trackPageview('/onclick/emailquote');
});
});
这应该可以防止页面滚动。记得在对话框关闭后移除绑定,否则页面将无法滚动!您可以使用以下方法删除绑定:
$(window).unbind('scroll');
【讨论】:
不要在链接中使用#标签!
它会尝试滚动到锚点#,但因为它是空的,它会滚动到页面顶部。
编辑您的链接:
<a href="" onclick="javascript: pageTracker._trackPageview('/onclick/emailquote');" class="emailPost">Email this quote</a>
(注意 href="")
【讨论】:
return false;。 crisp.tweakblogs.net/blog/313/…
<a href="" onclick="javascript: pageTracker._trackPageview('/onclick/emailquote');return false;" class="emailPost">Email this quote</a> 可以正常工作。
此代码块适用于滚动问题非常常见的 IOS 移动设备。
$('body').on('touchmove', function(e) {
if ($('.scroll-disable').has($(e.target)).length) e.preventDefault();
});
$('body').on('shown.bs.modal', function() {
$(this).addClass('scroll-disable');
});
$('body').on('hidden.bs.modal', function() {
$(this).removeClass('scroll-disable');
});
【讨论】:
如果你这样使用它
<a href="#targetid">Open Model</a>
(#tragetid) 是 div 弹出窗口 ID。
您可以使用href="" 并将其替换为data-mfp-src=""。它运行良好。
【讨论】: