js控制网页在特定iframe中打开程序代码
我们在编写系统管理后台时,很多时候会使用到iframe进行管理,但是有有个问题就是有些时候比较聪明的用户会绕过我们的iframe的父页面,而直接打开了iframe中src的内容,如果这样,重则给我们的系统带来破坏,轻则使我们系统的有些功能不能正常使用,今天用js写了一个控制脚本,可以让用户无法绕开iframe的父页而直接打开子页的内容进行浏览,主要通过在iframe在子父页面各加一段js脚本实现控制
javascript实现刷新iframe的方法的总结,现在假设存在下面这样一个iframe,则刷新该iframe的N种方法有:
代码如下 | |
<iframe src="1.htm" name="ifrmname" id="ifrmid"></iframe> |
第一种方法:用iframe的name属性定位
代码如下 | |
<input type="button" name="Button" value="Button" onclick="document.frames('ifrmname').location.reload()"> 或者 <input type="button" name="Button" value="Button" onclick="document.all.ifrmname.document.location.reload()"> |
实例
父页面
代码如下 | |
function check_iframe() { |
说明:1、要使用onload或者类此这个事件加载该函数
2、main表示父页面中要显示子页面的iframe的id
3、传过来的url是通过get方式,使用encodeURI编码的
子页面
代码如下 | |
function check_page() { |
说明:1、要使用onload或者类此这个事件加载该函数
2、supadmin.html表示是含有该页面显示的iframe的父页面
3、使用encodeURI对子页面的url进行了编码,使用get方式传送给父页面
frameset中打开自己窗口也一样
(1)包含框架页的代码。
代码如下 | |
<frameset cols="100,*" name="frame1"> |
(2)框架加载页(1.htm或2.htm)的链接代码:
代码如下 | |
<a href="http://www.111cn.net" target="top">在上框中打开链接</a> |
现在讲一下iframe下JS跨域
浏览器虽然会禁止js跨域访问页面中的对象,但对于iframe的层级关系引用并没有做限制,即parent仍然可用;该方案就是利用了2层内嵌 iframe、使用第二级iframe中的页面与parent.parent的页面是同域名的关系,从而避免跨域问题实现两个页面间相关数据的传递,本质上就是利用parent.parent实现对父父页面中js的回调!
具体操作流程:
1、A.com的index.htm页面包含一个iframe,src指向 B.com 下的sub-index.html
2、B.com 域名下的 sub-index.htm页面中再内嵌一个隐藏的iframe,iframe的src指向 A.com 域名下的页面pass.html?p=xx, pass.html页面只是用来传递sub-index.htm页面加载完之后需要传递的参数,pass.html页面里js拿到获得p参数的值后直接调用 parent.parent.document.getElementById("content").value=p; 完成对父页面dom值的设置;