最近在一个项目中用到 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>