解决 iframe 中的锚点在火狐中无效的问题

最近在一个项目中用到 iframe,其中有些页面带有“锚点(anchor)”,在 IE 下 iframe 里的锚点工作正常,但是在火狐及 Google Chrome 浏览器中却无效···

于是打开 Google 放狗去搜,搜了半天中文资料均无果···

就在绝望之际,想想国内的人没有老外那么有奉献精神,于是换成英文的再放狗搜,功夫不负有心人呀,果然在一篇老外的博文中给出了答案···


在给出方案之前,我们先来简要地说一下为什么火狐下会出现改现象的原因,原来火狐是基于安全性考虑,在 火狐4 及以上版本中禁止了在 iframe 跳至锚点的支持(我刚看到这个时,顿时恍然大悟——原来如此,我晕~~惊恐)···


先将方案共享出来,也好给国人遇到同样问题的人一个参考,这个方案是基于 JQuery 的,代码如下:


<script type="text/javascript">

// 这个函数解决“anchor(锚点)”在火狐中 iframe 内无效问题

$( function (){
   $( "a" ).each( function (){
     var link = $( this );
     var href = link.attr( "href" );
     if (href && href[0] == "#" )
     {
       var name = href.substring(1);
       $( this ).click( function () {
         var nameElement = $( "[name='" +name+ "']" );
         var idElement = $( "#" +name);
         var element = null ;
         if (nameElement.length > 0) {
           element = nameElement;
         } else if (idElement.length > 0) {
           element = idElement;
         }
 
         if (element) {
           var offset = element.offset();
           window.parent.scrollTo(offset.left, offset.top);
         }
 
         return false ;
       });
     }
   });
});

</script>


转载至:http://matthewmanela.com/blog/making-linking-between-anchors-in-an-iframe-work-in-firefox-4-and-above/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值