全面兼容的Iframe 与父页面交互操作

父页面 Father.htm 源码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>全面兼容的Iframe 与父页面交互操作</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script language="javascript" type="text/javascript">
        function fatherFunction() {
            alert("我是父页面的方法,\n调用成功!");
        }

        /*
        *父页面通过 iframe Name 调用子页面的函数或者获取子页面元素的内容
        */
        function one() {
            var ifreame = window.frames["childPage1"];
            if (ifreame != null && ifreame != undefined) {
                ifreame.childFunction();
            }
        }

        function two() {
            var ifreame = window.frames["childPage1"];
            if (ifreame != null && ifreame != undefined) {
                var myValue = ifreame.document.getElementById("childPage");

                alert(myValue.innerHTML);
            }
        }

        /*
        *父页面通过 iframe Id 调用子页面的函数或者获取子页面元素的内容
        */
        function three() {
            var ifreame = window.top.document.getElementById("childPage2").contentWindow;
            if (ifreame != null && ifreame != undefined) {
                ifreame.childFunction();
            }
        }

        function four() {
            var ifreame = window.top.document.getElementById("childPage2").contentWindow;
            if (ifreame != null && ifreame != undefined) {
                var myValue = ifreame.document.getElementById("childPage");

                alert(myValue.innerHTML);
            }
        }
    </script>
</head>
<body style="margin: auto;">
    <fieldset>
        <legend>父页面通过 iframe Name 调用子页面的函数或者获取子页面元素的内容</legend>
        <dl>
            <dt>
                <input type="button" value="通过ifrme Name 调用子页面的脚本" onclick="one();" />
                <input type="button" value="通过ifrme Name 获取子页面元素的内容" onclick="two();" />
            </dt>
            <dt>
                <div style="width: 100%; height: 250px;">
                    <iframe name="childPage1" src="Child1.htm" frameborder="0" scrolling="no" width="100%"
                        height="250"></iframe>
                </div>
            </dt>
        </dl>
    </fieldset>

    <fieldset>
        <legend>父页面通过 iframe Id 调用子页面的函数或者获取子页面元素的内容</legend>
        <dl>
            <dt>
                <input type="button" value="通过ifrme Name 调用子页面的脚本" onclick="three();" />
                <input type="button" value="通过ifrme Name 获取子页面元素的内容" onclick="four();" />
            </dt>
            <dt>
                <div style="width: 100%; height: 250px;">
                    <iframe id="childPage2" src="Child2.htm" frameborder="0" scrolling="no" width="100%"
                        height="250"></iframe>
                </div>
            </dt>
        </dl>
    </fieldset>
</body>
</html>

  嵌入的 iframe 子页面 Child1.htm 源码如下:

效果图如下:

<ignore_js_op>

详细说明:http://wp.662p.com/thread-8117-1-1.html

时间: 2024-10-14 00:18:14

全面兼容的Iframe 与父页面交互操作的相关文章

bug:页面交互操作引发的问题

最近在测试一些h5页面,突然悟到一些测试点 需求点: 用户可以在页面领取礼物,领取的礼物在页面底部展示,用户点击礼物可调起分享弹窗,礼物超过一屏可左右滑动, bug的表现形式: 仅当礼物超过一屏时(一行),点击礼物无法调起分享弹窗(此问题仅在Android机上可复现,ios无法复现) 问题原因: 1.前端开发在开发使用了最新版本滑动控件,这个最新的控件需要对属性进行配置,比如点击事件等 研发使用了新控件,没有对属性值进行配置 2.问题为什么只在Android上可复现? Android原生系统对较

iframe父子页面交互

以下的父页面与子页面交互的方法必须起一个页面服务才能使用(通过域名来访问)并且的保证父页面与子页面是在同一域名下,不然是会报错的 父页面调用子页面 获取父页面的ifram的id或calss之后可以通过contentWindow这个对象获取子页面的元素和方法.父页面调用子页面的元素和方法时,必须要等iframe加载完毕,或者在onload 方法里执行,不然是获取不到的! contentWindow 可取得子窗口的 window 对象. document.getElementById('main')

iframe与父页面传值

最近做的项目中用到了不少iframe,而且需要实现: 从父页面获取iframe中某个元素的值或则从iframe页面获取其父页面上某个元素的值. 在网上查询了相关东西,后总结如下: (1)父页面获取iframe中的元素值: Js代码   //根据iframe的id获取对象 var i1 = window.frames['iframeId']; //var iframe =window.frames[0];也可以 //获取iframe中的元素值 var val=i1.document.getElem

iframe与父页面中JS执行顺序控制

同事遇到了一个问题: 父页面中有几个iframe,初衷是父页面的JS通过AJAX获取数据,然后用于初始化iframe页面,可以结果却是有的iframe页面却不能获得数据. [问题根源] 父页面在加载iframe的时候,也会执行JS代码,二者执行完成先后顺序并不可控,而iframe却要使用JS获取的数据,导致在iframe初始化时,没有得到数据,也就无法初始化iframe页面了. [解决办法] HTML代码中,iframe的src属性不赋值.父页面的JS在AJAX请求成功之后,再为iframe的s

js对iframe内外(父子)页面进行操作

怎么对iframe进行操作,1.在iframe里面控制iframe外面的js代码.2.在父框架对子iframe进行操作. 获取iframe里的内容 主要的两个API就是contentWindow,和contentDocument iframe.contentWindow, 获取iframe的window对象 iframe.contentDocument, 获取iframe的document对象 这两个API只是DOM节点提供的方式(即getELement系列对象) var iframe = do

js之iframe子页面与父页面通信

iframe子页面与父页面通信根据iframe中src属性是同域链接还是跨域链接,通信方式也不同. 一.同域下父子页面的通信 父页面parent.html <html> <head> <scripttype="text/javascript"> function say(){ alert("parent.html"); } function callChild(){ myFrame.window.say(); myFrame.wi

父页面操作iframe子页面的安全漏洞及跨域限制问题

一.父子交互的跨域限制 同域情况下,父页面和子页面可以通过iframe.contentDocument或者parent.document来交互(彼此做DOM操作等,如父页面往子页面注入css). 跨域情况下,就会有限制,无法相互操作. [解决办法] 1.主域不同 没招 2.主域相同,子域不同 以父(a.baidu.com)子(b.baidu.com)为例: 这俩页面相互操作,要是想解决跨域限制,必须设置一个共同的主域,即document.domain="baidu.com" 二.禁止父

IFrame父页面和子页面的交互

现在在页面里面用到iframe的情况越来越少了,但有时还是避免不了,甚至这些页面之间还需要用js来做交互,那么这些页面如何操作彼此的dom呢?下面将会逐步介绍. 1.父页面操作子页面里面的dom 下面提供了四中方法来操作iframe里面的dom: a. contentWindow: 以window对象返回iframe中的文档,所有主流浏览器都支持. 用法: // 获取id为iframeId的子页面中的div01元素 document.getElementById('iframeId').cont

iframe子页面与父页面js通信

iframe子页面与父页面通信根据iframe中src属性是同域链接还是跨域链接,通信方式也不同. 一.同域下父子页面的通信 父页面parent.html <html> <head> <script type="text/javascript"> function say(){ alert("parent.html"); } function callChild(){ myFrame.window.say(); myFrame.w