这次给大家带来iframe中页面锚点失效如何处理,iframe中页面锚点失效处理的注意事项有哪些,下面就是实战案例,一起来看一下。
应用场景是:iframe页面没有滚动条,在父窗体中出现滚动条,锚点标记就会失效,因为,锚点是根据当前窗口滚动条滚动窗口的,成为子窗体后没有了滚动条,自然不会滚动。
解决办法是:用js判断页面是否被嵌套,用js计算iframe在父窗体位置,锚点在firame中的位置,两者相加成为父窗体的滚动。
遇到问题:获取父窗体元素(因为有域限制,所有需要在网络环境下方位(即http://domain.com));父窗体嵌套多个iframe,判断是否是当前iframe页面。
代码:
父窗体页面 index.html
*{margin: 0;padding: 0;border: 0;}html,body{width: 100%;height: 100%;}ddddd
登录后复制
子窗体页面iframe.html
a{padding: 5px;border: 1px solid #f00;float: left;display: block;margin-right: 5px;}p{width: 80%;margin: 10px auto;height: 500px;border: 1px solid #f00;font-size: 30px;}$(function(){//如果是iframe则需要在网络中访问,因为js里有域限制//如果没有iframe则不进行处理,if(window!==window.top){//获取top窗口中的iframe,如果有iframe嵌套过多,请自行修改var iframeList=window.top.document.getElementsByTagName('iframe');for(var i=0;i<iframeList.length;i++){//判断当前窗口是否循环中的iframeif(window.location.toString().indexOf(iframeList[i].getAttribute('src').toString())!=-1){//等自己的所在iframe加载完成给a锚点加事件window.top.document.getElementsByTagName('iframe')[i].onload=function(){//确定iframe在父窗体的距顶部距离var top = window.top.document.getElementsByTagName('iframe')[i].offsetTop;$('a').each(function(){var href = $(this).attr('href');if(href.indexOf('#')!=-1){//判断是否是锚点而不是链接var name = href.substring(href.indexOf('#')+1);$(this).bind('click',function(){$('a').each(function(){if($(this).attr('name')==name){//父窗口滚动$(window.parent).scrollTop($(this).offset().top+top);}});});}});}}}}});abcd
登录后复制
相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!
推荐阅读:
JS+jquery库实现iframe高宽自适应(附代码)
iframe怎样实现触发父窗口元素事件
Tab选项卡滚动导航切换实现(附代码)
以上就是iframe中页面锚点失效如何处理的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2767739.html