iframe设置锚点来解决刷新时跳转到其他页面和点击动态生成的菜单栏让其高亮的思路
2017-12-28 20:52
681 查看
我们在使用ifram
4000
e时,一般是很多子页面共用一个菜单栏,然后点击不同菜单切换到不同的子页面,但是当你刷新时可能会碰到跳转到其他页面的情况,这个时候就需要设置锚点来解决。
另外,我们还需要解决点击菜单栏让它处于高亮的选中状态。并且在设置锚之后,还要处理如何在页面刷新后,让动态生成的菜单仍旧处于被选中的状态。
我们看代码。
先设置锚点
然后获取锚点内容
在页面刷新时进行url赋值操作和保持菜单栏选中状态
到此咱们就已经把设置后的锚点赋给了刷新后iframe的url,关于下面这段代码:
它的意义就是当你从登陆界面跳转到默认页时,咱们上面设置的hash是没有值得,也就是说location.hash为空,所以就会出现从登陆页跳转过来后没有子页面的情况。所以咱们得加一个判断,当它为空时给它赋予一个默认页面的锚。
而关于下面这段代码:
它的意义在于解决当页面刷新时,如果你的菜单栏不是通过ajax动态生成的,而是通过类似python模板数据等非异步方式来动态生成的,那么你就需要在刷新后给它赋予一个选中状态。
而在开头我们提到的点击菜单栏切换选中状态的js,如下代码:
这是html部分的代码:
4000
e时,一般是很多子页面共用一个菜单栏,然后点击不同菜单切换到不同的子页面,但是当你刷新时可能会碰到跳转到其他页面的情况,这个时候就需要设置锚点来解决。
另外,我们还需要解决点击菜单栏让它处于高亮的选中状态。并且在设置锚之后,还要处理如何在页面刷新后,让动态生成的菜单仍旧处于被选中的状态。
我们看代码。
先设置锚点
/设置锚点 function setAnchor(url){ var localHref = window.location.href; var endsub = localHref.indexOf("#"); var afterUrl = localHref.substring(0,endsub); window.location.href = afterUrl +"#"+ url; }
然后获取锚点内容
window.onhashchange = function(){ var hash = location.hash; hash = hash.substring(1,hash.length); //根据id在你的iframe中赋予 $("#mainiframe").attr("src",url); };
在页面刷新时进行url赋值操作和保持菜单栏选中状态
document.addEventListener('DOMContentLoaded', function () { var hash; //当菜单栏未点击,hash未赋值时,给它设置默认值为index,既登陆进来后跳转到带锚的首页 if(location.hash.length == 0){ hash = index; }else{ hash = location.hash; } var url = hash.substring(1,hash.length); if(url != "index"){ $("#mainiframe").attr("src", url); } //当页面刷新时给菜单栏赋予当前页面的选中状态 $("#navBar.nav li a").each(function(){ if(url == $(this).attr("href").slice(1,$(this).attr("href").length)){ $(this).addClass("activate"); } }); }, false)
到此咱们就已经把设置后的锚点赋给了刷新后iframe的url,关于下面这段代码:
var hash; //当菜单栏未点击,hash未赋值时,给它设置默认值为index,既登陆进来后跳转到带锚的首页 if(location.hash.length == 0){ hash = index; }else{ hash = location.hash; } var url = hash.substring(1,hash.length); if(url != "index"){ $("#myiframe").attr("src", url); }
它的意义就是当你从登陆界面跳转到默认页时,咱们上面设置的hash是没有值得,也就是说location.hash为空,所以就会出现从登陆页跳转过来后没有子页面的情况。所以咱们得加一个判断,当它为空时给它赋予一个默认页面的锚。
而关于下面这段代码:
$("#navBar.nav li a").each(function(){ if(url == $(this).attr("href").slice(1,$(this).attr("href").length)){ $(this).addClass("activate"); } }); }, false)
它的意义在于解决当页面刷新时,如果你的菜单栏不是通过ajax动态生成的,而是通过类似python模板数据等非异步方式来动态生成的,那么你就需要在刷新后给它赋予一个选中状态。
而在开头我们提到的点击菜单栏切换选中状态的js,如下代码:
$("#navbar .nav li a").click(function(){ var url = $(this).attr("href").slice(1,$(this).attr("href").length); //在点击菜单后获取这个子页面的url setAnchor(url); if(url){ $("#navBar.nav li a").removeClass("activate"); $(this).addClass("activate"); } });
这是html部分的代码:
<div id="navBar"> <ul id="navAdd" class="nav"> <li><a href="/index">默认页</a></li> </ul> </div>
相关文章推荐
- 解决关闭 atrDialog 嵌入 iframe 页面,重定向到其他页面刷新父窗体问题
- 让超链接点击后不跳转,可以用href = "#",但是这个#就会锚点到页面最上边 点击链接后不跳转可以设置成
- H5页面,部分 Android手机点击number电话号码/成串数字时候,会跳转到其他页面造成404错误,如何解决?
- 页面刷新跳转后,导航栏高亮显示跳转前的点击位置
- iframe 框架中main 页面设置session ,超时只有main页跳转到指定页面的解决
- 动态生成的IFRAME,设置SRC时的问题解决分析
- 动态生成的IFRAME,设置SRC时的问题解决分析
- 解决iframe作为子窗口,刷新后iframe页面跳转到其它页面的问题
- 解决iframe跳转不刷新整个页面小问题
- iframe 框架中main 页面设置session ,超时只有main页跳转到指定页面的解决
- 解决iframe作为子窗口,刷新后iframe页面跳转到其它页面的问题
- 百度“搜索设置”之关于在页面定位某元素,而其中又参杂动态页面存在的问题解决方法
- iview2.0中动态生成Menu时,设置activeName不生效的解决办法
- 点击a标签,跳转到iframe中,并在iframe中显示指定的页面
- 动态生成的IFRAME,设置SRC时的,不同位置带来的影响
- 动态的把数据显示在table中,点击某一行的删除按钮实现该行的删除(通过ajax实现页面的无刷新加载)
- android中如何设置点击button页面跳转
- 页面使用iframe进行嵌套,关于如何实现,在子页面使整个页面跳转到其他页面
- 收到推送通知后页面跳转,当程序在后台,无论进入后台之前在哪个界面,点击收到的推送,跳转到指定界面的2个思路:
- frame框架-用户session失效仅在iframe中跳转登录页面的解决方法