场景:
我正在构建一个在 Chrome 中运行的信息亭应用程序。在其中,我通过带有锚点的链接(http://www.whatever.com/#specific_content)将另一个域的 iframe 加载到模式中。
问题:
当该内容加载时,iframe 会跳转到#specific_content,但父页面也会跳转。
这是一个单页信息亭应用程序,因此父页面的位置非常重要。场景的实际细节比上面的要复杂一些:
- 为了禁止在应用程序中滚动,我有 body {overflow:hidden;}
- 为了允许定位,我使用了一个设置为视口大小的包装容器。
- 为了模拟滚动,我要么绝对地重新定位包装器,要么绝对地定位包装器内的内容。
为了演示这个问题,我设置了一个 jsFiddle,但您需要查看没有 jsFiddle chrome 的输出才能看到问题的全部范围:
第 1 步)单击“链接到内容”,这将重新定位包装器
步骤 2) 单击“链接加载”,这将加载 iFrame 内容
演示:http: //jsfiddle.net/w47GT/8/embedded/result/
小提琴:http: //jsfiddle.net/w47GT/8/
编码:
CSS:
html, body { height:100%; padding:0; margin: 0;overflow:hidden; }
.background {
width : 100%;
height:400%;
background:#333 url('http://incurablystircrazy.files.wordpress.com/2012/04/runner-at-sunset.jpg');
}
.wrapper { position:absolute;width:100%;height:200%; }
iframe { width:50%;height:50%;position:fixed;top:25%;left:50%;margin-left:-25%;border:2px solid red;background-color:#ddd; }
.link { width:100%;height:25px;position:absolute;top:25px;background-color:green; }
.anchor { position:absolute;top:400px;width:100%;height:25px;background-color:red; }
HTML
<div class="wrapper">
<div class="background"></div>
<a class="link" href="#linked">Link to content</a>
<a class="anchor" name="linked" href="http://www.smashingmagazine.com#footer" >Link to Load iFrame</a>
</div>
<iframe></iframe>
JS
$(function(){
$('.link').on('click',function(){ $('.wrapper').css({top:'-400px'}); });
$('.anchor').on('click',function(e){
e.preventDefault();
var href = $(this).prop('href');
$('iframe')
.attr({
src: href,
name: 'testing'
});
});
});