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

来源:互联网 发布:prime输入法知乎 编辑:程序博客网 时间:2024/06/07 02:50

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

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

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


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


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


<script type="text/javascript">

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

$(function(){
  $("a").each(function(){
    varlink = $(this);
    varhref = link.attr("href");
    if(href && href[0] == "#")
    {
      varname = href.substring(1);
      $(this).click(function() {
        varnameElement = $("[name='"+name+"']");
        varidElement = $("#"+name);
        varelement = null;
        if(nameElement.length > 0) {
          element = nameElement;
        }elseif(idElement.length > 0) {
          element = idElement;
        }
 
        if(element) {
          varoffset = element.offset();
          window.parent.scrollTo(offset.left, offset.top);
        }
 
        returnfalse;
      });
    }
  });
});

</script>


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