001.iframe父子兄弟之间调用传值

今天做一个后台模版的时候,弹出框关闭之后,需要刷新页面!
在主页面中包含IFrame,多的不爱说了!就先这样吧!!!
感觉没有意思!
contentWindow && parent

iframe的调用包括以下几个方面:(调用包含html dom,js全局变量,js方法)

  • 主页面调用iframe;
  • iframe页面调用主页面;
  • 主页面的包含的iframe之间相互调用;

主要知识点

  • document.getElementById("hanpang").contentWindow 得到iframe对象后,就可以通过contentWindow得到iframe包含页面的window对象,然后就可以正常访问页面元素了;
  • $("#hanpang")[0].contentWindow 如果用jquery选择器获得iframe,需要加一个【0】;
  • $("#hanpang")[0].contentWindow.$("#name").val() 可以在得到iframe的window对象后接着使用jquery选择器进行页面操作;
  • $("#hanpang")[0].contentWindow.myValue="我是胖先森"; 可以通过这种方式向iframe页面传递参数,在iframe页面window.myValue就可以获取到值,myValue是自定义的变量;
  • 在iframe页面通过parent可以获得主页面的window,接着就可以正常访问父亲页面的元素了;
  • parent.$("#hanpang")[0].contentWindow.message; 同级iframe页面之间调用,需要先得到父亲的window,然后调用同级的iframe得到window进行操作;

源码

源码包含内容,主页面(main.html)中含有两个iframe子页面(frame.html,newIframe.html)

  • 主页面如何调用子页面中的方法;
  • 子页面如何调用主页面中的方法;
  • 两个子iframe之间如何如何进行交互

main.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>IFrame的数据传递</title>
</head>
<body>
<p>
    <a href="javascript:void(0)" onClick="sendParameter();">参数传递</a>
</p>
<p>
    <a href="javascript:void(0)" onClick="callIframeMethod();">调用子iframe方法</a>
</p>
<p>
    <a href="javascript:void(0)" onClick="callIframeField();">调用子iframe变量</a>
</p>
<p>
    <a href="javascript:void(0)" onClick="callIframeHtml();">调用子iframe组件</a></br>
</p>


<iframe id="hanpang" src="myFrame.html" width="100%" frameborder="1"></iframe>
<iframe id="new" src="newFrame.html" width="100%" frameborder="1"></iframe>


<script type="text/javascript" src="../jquery-1.8.3.js"></script>
<script type="text/javascript">

    var parentVal = "我是父页面定义的变量";

    function sendParameter(){
        //myValue 是传递的变量
        $("#hanpang")[0].contentWindow.myValue="我是胖先森";
    }
    
    function callIframeMethod() {
        //document.getElementById("hanpang").contentWindow.myTest();
        $("#hanpang")[0].contentWindow.myTest(); //用jquery调用需要加一个[0]
    }
    
    function callIframeField() {
        alert($("#hanpang")[0].contentWindow.message);
    }
    
    function callIframeHtml() {
        // #name 是 myFrame页面中控件ID
        alert($("#hanpang")[0].contentWindow.$("#name").val());
        //alert($("#hanpang")[0].contentWindow.document.getElementById("dd").value);
        //alert($("#hanpang")[0].contentWindow.document.getElementById("dd").value);
        
    }
    
    function say() {
        alert("我是main.html提供的方法");
    }

</script>

</body>
</html>

myFrame.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>子页面</title>
    </head>
    <body>
        <a href="javascript:;" onclick="getParamter()">接受参数</a>
        <a href="javascript:;" onClick="callMainMethod();">调用主窗口方法</a>
        <a href="javascript:;" onClick="callMainField();">调用主窗口变量</a>
        <a href="javascript:;" onClick="callMainHtml();">调用主窗口组件</a>
        <input id="name" type="text" value="我要学习"/>

        <script type="text/javascript" src="../jquery-1.8.3.js"></script>
        <script type="text/javascript">
            var message = "消息:打赏啊!";
            function getParamter() {
                alert(window.myValue);
            }
            
            function callMainMethod() {
                parent.say();
            }

            function callMainField() {
                alert(parent.parentVal);
            }
            
            function callMainHtml() {
                alert(parent.$("#hanpang").attr("id"));
            }

            function myTest() {
                alert($("#name").val());
            }
        </script>
    </body>
</html>

newFrame.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <a href="javascript:;" onClick="callLevelFrame();">调用兄弟iframe</a>
    <input id="new_iframe" type="text" value="我的新值"/>

    <script type="text/javascript" src="../jquery-1.8.3.js"></script>
    <script type="text/javascript">
        function callLevelFrame() {
            var message=parent.$("#hanpang")[0].contentWindow.message;
            alert(message);
        }

    </script>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容