网站地图    收藏   

主页 > 前端 > javascript >

js控制网页在特定iframe中打开程序代码

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] 本文章来介绍一个不错的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() {
            var url = location.search;//包括?的参数
            if (url.indexOf("?")!=-1) {
                var str = url.substr(1); //传输过来的url
                document.getElementById("main").src = decodeURI(str);
            }
        }

说明:1、要使用onload或者类此这个事件加载该函数
2、main表示父页面中要显示子页面的iframe的id
3、传过来的url是通过get方式,使用encodeURI编码的
子页面

 代码如下 复制代码

function check_page() {
    var iframe_url = document.referrer.toLowerCase();
    if (iframe_url == "") {
        document.location.href = "default.aspx?" + encodeURI(document.location.href);
    }
//防止在子页面中点击本页面自身超链时再次打开一个iframe
    else if (iframe_url.indexOf("default.aspx") == -1 && document.location.href.toLowerCase().indexOf(iframe_url) == -1) 
    { document.location.href = "default.aspx?" + encodeURI(document.location.href); }
}

说明:1、要使用onload或者类此这个事件加载该函数
2、supadmin.html表示是含有该页面显示的iframe的父页面
3、使用encodeURI对子页面的url进行了编码,使用get方式传送给父页面

frameset中打开自己窗口也一样

(1)包含框架页的代码。

 代码如下 复制代码

<frameset cols="100,*" name="frame1">
<frame src="1.htm" name="top">
<frame src="2.htm" name="main">
</frameset>

(2)框架加载页(1.htm或2.htm)的链接代码:

 代码如下 复制代码

<a href="http://www.111cn.net" target="top">在上框中打开链接</a>
<a href="http://www.111cn.net" target="main">在主框中打开链接</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值的设置;

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论