我有一些向导类型的工作流程与fancyboxes一起显示并从一个移动到另一个工作正常。我这样打开第一个:
$('a.fancybox').fancybox();
在html中,我只是在fancybox中有一个锚标记,其中包含我想要的锚ID。
当我从第一个盒子移动到第二个盒子时出现问题,我在服务器的响应后打开了这样的盒子:
$.fancybox.open({ href: '#divIwantAsFancybox' });
这样可以很好地打开fancybox,但在这种情况下,背景中的页面会滚动它在第一个框中没有的位置。我已经检查了由fancybox生成的内联css和html,并确定重要(可能)的唯一区别是,当使用.open()
时,我想要的内容不再呈现在具有类fancybox-overlay的div中。手动将代码移动到浏览器中的div或多或少会使fancybox无法使用。我在这里不知所措,并且不知道如何在不滚动背景的情况下指示fancybox打开第二个框。
PS:我已经尝试过在beforeShow和afterClose中设置overflow: hidden
的css hack,虽然这对我在浏览器上起作用,但它对移动浏览器没有预期的效果。出于这个问题的目的,我现在想坚持使用网络解决方案,但可能会避免这种黑客攻击,因为我知道它在移动浏览器上对我不起作用。
提前致谢。
答案 0 :(得分:0)
所以经过几个小时的挖掘后,我发现其他一些人使用overflow: hidden
技巧但在身体上而不是其中一个fancybox div。当您拨打$.fancybox()
或$.fancybox.open()
时,您可以传递回调函数,如下所示:
$.fancybox({ beforeShow: function() {
$('body').css({'overflow':'hidden'});
}, afterClose: function() {
$('body').css({'overflow':'visible'});
}});
但是,如果有人知道更好的方法来处理这个问题,请随意添加两美分,因为在我看来,这是一个fancybox的错误。我希望调用$.fancybox.open()
的行为与使用$('a.fancybox').fancybox()
引用锚点的行为相同。