在打开弹出窗口时隐藏页面的滚动条
document.body.style.overflow = "hidden";
并在关闭弹出窗口时恢复回去
document.body.style.overflow = "visible";
一种选择是暂时将body
的overflow
属性设置为hidden
,这会消除滚动条,但在页面调整时会导致轻微闪烁。
另一个选择是利用$(window).scroll()
事件,并从其中返回false。这也会导致一些闪烁,因为浏览器对返回false语句反应不够快。
最好的方法是将点击事件处理程序移动到单独的文件中,在那里进行绑定:
$(function() {
$('.emailPost').click(function() {
$(window).scroll(function() { return false; });
pageTracker._trackPageview('/onclick/emailquote');
});
});
这将防止页面滚动。请记得在对话框关闭后删除绑定,否则页面将不再可滚动!您可以使用以下方法删除绑定:
$(window).unbind('scroll');
这个代码块适用于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="" onclick="javascript: pageTracker._trackPageview('/onclick/emailquote');" class="emailPost">发送此引用邮件</a>
(注意 href="")
return false;
。http://crisp.tweakblogs.net/blog/313/the-useless-javascript-pseudo-protocol.html - Tatu Ulmanen<a href="" onclick="javascript: pageTracker._trackPageview('/onclick/emailquote');return false;" class="emailPost">将此引语发送电子邮件</a>
能够正常工作。 - Roger Far<a href="#targetid">Open Model</a>
(#tragetid) 是弹出层的 div id。
你可以使用并替换 href=""
为 data-mfp-src=""
。它完美地工作。