首页 > 其他分享 >iframe 父子间传值通信

iframe 父子间传值通信

时间:2023-09-21 10:05:56浏览次数:25  
标签:function 父子 window let iframe data 传值 页面

iframe 父子间传值通信_javascript

同域 iframe 父子间传值

父页面

<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>

子页面

<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>  
跨域 iframe 父子间传值

父页面

<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>

子页面

<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>

标签:function,父子,window,let,iframe,data,传值,页面
From: https://blog.51cto.com/u_14914383/7548628

相关文章

  • 前后台进程、孤儿进程和 daemon 类进程的父子关系
    回到Shell系列文章大纲前后台进程、孤儿进程和daemon类进程的父子关系前台进程、后台进程和进程父子关系前台进程是占用当前终端的进程,只有该进程执行完成或被终止之后,才会释放终端并将终端交还给shell进程。例如:$sleep30执行该命令后,将创建sleep进程,sleep进程是当前ba......
  • bus兄弟组件传值
    bus兄弟组件传值,注意:1、监听时机要比发送时机早2、这两个组件不要按需引入,不然会导致首次收不到传的值例:在组件1的mounted里面发送值:this.$bus.$emit('selected',true)在组件2的created里面监听值:this.$bus.$on("selected",(data)=>{})......
  • 用iframe把Grafana Dashboard嵌入第三方系统
    用Grafana可以很容易地创建Dashboard,并且后期修改和更新很方便,由于它的易用性和灵活性很适合用来做系统和生产的监控。但是Grafana的UI设计似乎对普通用户不是很友好,如果让用户直接登录Grafana去搜索浏览Dashboad不是很合适。由此自然就产生了把Grafana嵌入第三方系统的需求。重......
  • 11 iframe内联框架
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>iframe内联框架</title></head><body><iframesrc="//player.bilibili.com/player.html?aid=55631961......
  • js操作iframe
    父页面<iframename="iframe1"></iframe><iframename="iframe2"></iframe><scripttype="text/javascript">functionp_mothd1(){alert('p_mothd1');}</script>子页面iframe1页面functioni......
  • 如何避免HTML iframe导致页面刷新
    要避免HTMLiframe导致页面刷新,您可以采取以下几种方法:使用AJAX加载内容:使用JavaScript的AJAX技术来异步加载iframe中的内容,这样就可以避免整个页面的刷新。您可以使用XMLHttpRequest或者jQuery的$.ajax方法来实现异步加载。设置iframe的sandbox属性:将iframe的sandbox属性设置为"al......
  • iOS开发Swift-14-反向传值,右滑删除,语言本地化,编辑换序,DeBug,addTarget-待办事项Ap
    1.点击某一条待办事项,出现编辑界面,可对待办事项的文本进行修改.不重新设计界面,而是将新增页面进行修改复用.2.为新增页面取StoryboardID为TodoTableViewControllerID. 3.为列表最右边加一个小箭头.选中TodoCellID,将属性中的Selection修改为DisclosureIndicator. 4.......
  • vue 嵌套全屏iframe 能有效避开返回两次才能返回上一个路由的问题
    <template> <divclass="home">  <iframeref="iframe"class="iframe"frameborder="no"></iframe> </div></template><script>import{ get_doctor_info, statistics, ......
  • js iframe 打印 打印预览 页眉页脚的设立
    jsiframe打印打印预览页眉页脚的设置1、window.print方式://jsp页面打印按钮:<inputtype="button"value="打印"οnclick="print();">//js中:functionprint(){window.print();//style样式中,设置隐藏按钮打印:<style>@mediaprint{.noprint{display:no......
  • Vue组件传值方法
    使用propsprops是用于向子组件传递数据的一种方式。父组件可以将数据传递给子组件的props属性,子组件则可以通过props来访问这些数据。父组件:<template><div><child-component:message="message"></child-component></div></template>子组件:<template><div>{......