美文网首页
001.iframe父子兄弟之间调用传值

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

作者: 胖先森 | 来源:发表于2017-04-01 22:56 被阅读0次

今天做一个后台模版的时候,弹出框关闭之后,需要刷新页面!
在主页面中包含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>

相关文章

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

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

  • iframe相关文章记录

    1、iframe父子兄弟之间调用传值(contentWindow && parent)2、iframe兄弟间和if...

  • 组件通信

    vue传值可分为父子之间传值、兄弟组件之间传值、跨代组件之间传值 1.父子之间传值:可以使用$emit/props...

  • 2020-08-19 swift 传值的几个方式

    页面传值是指:父子页面之间、非父子页面之间、兄弟页面之间、非兄弟页面之间数据互通的方式,是为页面传值(个人见解) ...

  • 组件之间的传值

    组件之间的传值,包括父子组件传值,兄弟组件之间的传值,其中父子组件包括父组件向子组件传值和子组件向父组件传值,现在...

  • Vue组件之间的传值

    Vue父子组件之间的传值(props)兄弟组件 VUEX

  • 状态管理Bus的使用

    Bus 1. 父子组件之间通信 父传子 props 子传父 $emit 事件触发 2. 兄弟之间传值 同一父组件兄...

  • eventBus实现兄弟,父子之间传值

    写这个的目的是为了记录我之前踩得坑,我真的好希望两个月之前我 能看到我写的这篇文章。因为我们的项目比较小,所以没有...

  • 22.父子组件之间传值示例

    1.父子组件之间传值:

  • angular组件之间的传值

    父子组件传值 父组件给子组件传值通过属性绑定的方式 子组件通过发送是事件给父组件传值 兄弟组件相互传值 兄弟组件通...

网友评论

      本文标题:001.iframe父子兄弟之间调用传值

      本文链接:https://www.haomeiwen.com/subject/elywottx.html