iframe 父子间传值通信

news/2024/8/22 18:09:00 标签: json, javascript

1、同域 iframe 父子间传值

(1)父页面

<html>
<head>
    <script type="text/javascript">
        function say(){
            alert("parent.html");
        }
        function callChild(){
            myFrame.window.say();
            myFrame.window.document.getElementById("button").value="调用结束";
        }
    </script>
</head>
<body>
    <input id="button" type="button" value="调用child.html中的函数say()" onclick="callChild()"/>
    <iframe name="myFrame" src="child.html"></iframe>
</body>
</html>

(2)子页面

<html>
<head>
    <script type="text/javascript">
        function say(){
            alert("child.html");
        }
        function callParent(){
            parent.say();
            parent.window.document.getElementById("button").value="调用结束";
        }
    </script>
</head>
<body>
    <input id="button" type="button" value="调用parent.html中的say()函数" onclick="callParent()"/>
</body>
</html>

总结:方法调用

父页面调用子页面方法:FrameName.window.childMethod();

子页面调用父页面方法:parent.window.parentMethod();

2、跨域 iframe 父子间传值

(1)父页面

<template>
    <div>
        <iframe 
         :src="iframesrc" 
         id="a-page"></iframe>
    </div>
</template>

<script>
export default {
    computed:{
        iframesrc:function(){
            let iframesrc = "http://b.com"
            return iframesrc
        }
    },
    created () {
        // 得到B传来的值 
        window.addEventListener('message',function(e){
            console.log("B DOM的高度", e.data)
        },false);
        // 监听A页面的事件,发送给B
        window.addEventListener('scroll', function () {
            let iframe = document.getElementById('a-page');
            
            let json = {
                scrollTop: scrollTop,
                windowHeight: windowHeight,
            };
            iframe.contentWindow.postMessage(json, '*');
        });
    }
}
</script>

(2)子页面

<template>
    <div>
        <div id="b-page"></div>
    </div>
</template>

<script>
export default {
    mounted() {
        // 获取到B页面的值,发送给A
        let _this = this
        let b_pageH = document.getElementById('b-page').scrollHeight;
        window.parent.postMessage(b_pageH, '*');
        // 得到A页面的值
        window.addEventListener('message',function(e){
            console.log("e.data.scrollTop", e.data.scrollTop)
            console.log("e.data.windowHeight", e.data.windowHeight) 
        },false);
    }
}
</script>

 

转载于:https://www.cnblogs.com/dxt510/p/11151744.html


http://www.niftyadmin.cn/n/711396.html

相关文章

spring mvc MultipartHttpServletRequest获取页面传入的所有文件

2019独角兽企业重金招聘Python工程师标准>>> 用MultipartHttpServletRequest multipartRequest (MultipartHttpServletRequest) request; 可获取所有页面传入的文件 RequestMapping(value"/shenbao_submit")public ModelAndView shenbao_submit(HttpServ…

计算机病毒的运营消耗cpu,工业计算机CPU使用率过高的原因以及解决方法

原标题&#xff1a;工业计算机CPU使用率过高的原因以及解决方法当工业计算机CPU使用率过高&#xff0c;导致资源不足时&#xff0c;很容易会出现卡死或者长时间等待无响应的情况。这时候我们只能通过手动的方式让工业计算机实现重启&#xff0c;但是如果之前运行的一些数据都没…

PageValidate 类

转载&#xff1a;http://www.cnblogs.com/sufei/archive/2010/01/14/1648028.html using System.Text.RegularExpressions;/// <summary> /// 开发人&#xff1a;苏飞 /// 开发时间&#xff1a;2009-09-11 /// 主要功能&#xff1a;判断页面各个控件的输入 /// </summ…

Redis——事务 锁机制

文章目录&#xff1a; 1.Redis中事务的定义 1.1 案例一&#xff1a;事务中组队成功、提交成功 1.2 案例二&#xff1a;事务中组队阶段报错、提交失败 1.3 案例三&#xff1a;事务中组队成功&#xff0c;提交有成功有失败情况 2.Redis中的锁机制 2.1 悲观锁 2.2 乐观锁 …

Laravel配置session

\Illuminate\Session\Middleware\StartSession::class,\Illuminate\View\Middleware\ShareErrorsFromSession::class, 转载于:https://www.cnblogs.com/unclewang666/p/11153160.html

川教版四年级下册计算机教案,四年级下信息技术教案-整理自己的文件和文件夹-川教版...

《四年级下信息技术教案-整理自己的文件和文件夹-川教版》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《四年级下信息技术教案-整理自己的文件和文件夹-川教版(3页珍藏版)》请在人人文库网上搜索。1、www.zxxk.com第二课整理自己的文件和文件夹一、教学目标让学生通…

SQL Server 审核(Audit)-- 介绍

SQL Server 审核&#xff08;Audit&#xff09;-- 介绍MSDN请参见&#xff1a;http://msdn.microsoft.com/zh-cn/library/cc280386%28vsql.120%29.aspx认识审核SQL Server审核是从SQL Server 2008开始引入的一套全新的审核系统。“审核”SQL Server 数据库引擎实例或单独的数据…

Redis——持久化之RDB

1.RDB&#xff08;Redis DataBase&#xff09; 在指定的时间间隔内将内存中的数据集快照写入磁盘&#xff0c; 也就是行话讲的Snapshot快照&#xff0c;它恢复时是将快照文件直接读到内存里。 1.1 RDB备份是如何执行的&#xff1f; Redis会单独创建&#xff08;fork&#xff09…