Fancybox 背景滚动与 .open()

Fancybox background scroll with .open()

我有一个向导类型的工作流程,与 fancyboxes 一起使用,让它们显示并从一个到另一个工作正常。我这样打开第一个:

$('a.fancybox').fancybox();

在 html 中,我只是在 fancybox 中有一个锚标记,其中包含我想要的锚 ID。

当我从第一个盒子移动到第二个盒子时出现问题,在服务器响应后我打开了第二个盒子:

$.fancybox.open({ href: '#divIwantAsFancybox' });

这可以很好地打开 fancybox,但在这种情况下,后台页面会滚动到第一个框上没有的位置。我检查了由 fancybox 生成的内联 css 和 html 并确定唯一重要的区别(可能)是当使用 .open() 时,我想要的内容不再呈现在 div 与 class fancybox-overlay。在浏览器中手动将代码移动到 div 中或多或少会导致 fancybox 无法使用。我在这里不知所措,不知道如何指示 fancybox 在不滚动背景的情况下打开第二个框。

PS:我已经尝试了 css 在 beforeShow 和 afterClose 中设置 overflow: hidden 的 hack,虽然这对我在浏览器上有效,但在一个移动浏览器。出于这个问题的目的,我现在想坚持使用网络解决方案,但可能会避免这种黑客攻击,因为我知道它在移动浏览器上对我不起作用。

提前致谢。

所以经过几个小时的挖掘,我发现其他一些人在使用 overflow: hidden 技巧,但在 body 而不是其中一个 fancybox div 上。无论何时调用 $.fancybox()$.fancybox.open(),都可以像这样传入回调函数:

$.fancybox({ beforeShow: function() { 
    $('body').css({'overflow':'hidden'});
}, afterClose: function() {
    $('body').css({'overflow':'visible'});
}});

但是,如果有人知道更好的处理方法,请随时补充您的两分钱,因为在我看来,这是 fancybox 的一个错误。我希望调用 $.fancybox.open() 的行为与使用 $('a.fancybox').fancybox() 引用锚点的方式相同。