iframe父页面传递参数给子页面

简介: iframe父页面传递参数给子页面

父页面通过ifarame传递参数


有些时候,我们需要在嵌套页面。


我们就需要使用iframe了。


通过iframe传递参数给子页面。


需求描述,当我们点击按钮的时候。


传递参数给子页面。子页面接受后展示出来。


我们使用postMessage() 方法用于安全地实现跨源通信。


otherWindow.postMessage(message, targetOrigin, [transfer]);


第一个参数你传递的消息


第二个参数你传递的地址。(其值可以是 *(表示无限制)或者一个 URI)


第三个参数transfer可选,是一串和 message 同时传递的 Transferable 对象。


这些对象的所有权将被转移给消息的接收方,而发送一方将不再保有所有权。


父页面传递参数


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>父页面给子页面传递参数</title>
    <style>
        html,
        body {
            height: 100%;
        }
    </style>
</head>
<body>
    <div>
        <input id="text" type="text" value="Runoob" />
        <button id="sendMessage">发送消息</button>
    </div>
    <iframe id="receiver" src="http://127.0.0.1:8848/%E7%A5%9E%E5%A5%87%E7%9A%84display/index.html" width="100%" height="100%">
        <p>我是标题</p>
    </iframe>
    <script>
        window.onload = function() {
            //获取iframe窗口的 contentWindow 属性
            var receiver = document.getElementById('receiver').contentWindow;
            console.log('receiver', receiver)
            // 给按钮绑定点击事件
            var btn = document.getElementById('sendMessage');
            btn.addEventListener('click', function(e) {
                // 阻止事件的默认行为
                e.preventDefault();
                var val = document.getElementById('text').value;
                // 传递数据给子页面.是我另外一个服务器的地址[http://127.0.0.1:8848]
                receiver.postMessage("Hello " + val + "!", "http://127.0.0.1:8848");
            });
        }
    </script>
</body>
</html>


子页面接受参数


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
  #divdemo{
     background:pink;
  }
    </style>
</head>
<div id="recMessage">
  我是子页面
</div>
</body>
<script>
window.onload = function() {
    var messageEle = document.getElementById('recMessage');
    window.addEventListener('message', function (e) {  // 监听 message 事件
  console.log("e",e)
        alert('消息来自的地址',e.origin);
        if (e.origin !== "http://127.0.0.1:5500") {  // 验证消息来源地址。这个地址是父页面的地址
            return;
        }
        messageEle.innerHTML = "从"+ e.origin +"收到消息: " + e.data;
    });
}
</script>
</html>


1425695-20220306221939729-282164304.png

相关文章
vue2—子页面调用父页面属性或方法
vue2—子页面调用父页面属性或方法
【Layui】子页面向父级页面传递参数
【Layui】子页面向父级页面传递参数
904 0
【Layui】子页面向父级页面传递参数
|
4月前
|
JavaScript 索引
用原生js的postMessage实现iframe传值,也可以用于跨域嵌套iframe传值
用原生js的postMessage实现iframe传值,也可以用于跨域嵌套iframe传值
用原生js的postMessage实现iframe传值,也可以用于跨域嵌套iframe传值
|
5月前
|
JavaScript 定位技术
vue父页面给iframe子页面传值
vue父页面给iframe子页面传值
41 0
|
5月前
|
JavaScript
vue使用iframe 子页面调用父页面的方法
vue使用iframe 子页面调用父页面的方法
|
5月前
|
JavaScript
iframe子页面获取父页面元素,或父页面获取iframe子页面的元素
iframe子页面获取父页面元素,或父页面获取iframe子页面的元素
Iframe父页面子页面通信
Iframe父页面子页面通信
|
JavaScript
简单vue父子iframe页面之间跨域通信传值postMessage()
简单vue父子iframe页面之间跨域通信传值postMessage()
813 0
|
Web App开发 JavaScript 前端开发
iframe调用父页面javascript函数的方法
1、iframe子页面调用 父页面js方法 子页面调用父页面函数只需要写上window.parent就可以了。比如调用a()函数,就写成: window.parent.a();   2、父页面调用iframe 子页面js方法 这个就稍微复杂一些,下面的方法支持ie和firefox浏览器: document.
2667 0
|
移动开发
iframe父页面跨域向子页面传递消息
iframe父页面跨域向子页面传递消息
1144 0