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

相关文章
|
前端开发 数据格式
jeecgboot前端antd Table组件动态合并单元格
jeecgboot前端antd Table组件动态合并单元格
833 0
|
API 计算机视觉
Qt实用技巧:自定义窗口标题栏
Qt实用技巧:自定义窗口标题栏
Qt实用技巧:自定义窗口标题栏
|
8月前
|
人工智能 JavaScript 搜索推荐
宜搭融合 DeepSeek R1 满血版!手把手教你玩转低代码 AI 产品
AI技术的迅猛发展,特别是DeepSeek的推出,为企业带来了前所未有的智能化体验。当低代码平台与AI技术结合时,迸发出丰富的应用场景。本文详细介绍如何通过宜搭平台使用DeepSeek,涵盖网页版、AI助理版、AI生成组件、连接器等功能,帮助用户轻松实现智能化业务系统。
1352 7
宜搭融合 DeepSeek R1 满血版!手把手教你玩转低代码 AI 产品
|
JavaScript 关系型数据库 Java
MyBatisPlus 最新版代码生成器(直接拿来就能用,包含自动生成 Vue 模版)
MyBatisPlus 最新版代码生成器(直接拿来就能用,包含自动生成 Vue 模版)
2923 0
|
关系型数据库 Java 数据库连接
如何利用Mybatis-Plus自动生成代码(超详细注解)
如何利用Mybatis-Plus自动生成代码(超详细注解)
4870 1
|
边缘计算 安全 物联网
5G与4G LTE的比较:主要改进与优势
5G与4G LTE的比较:主要改进与优势
1400 1
|
区块链 Python
Python脚本打包 exe,auto-py-to-exe来帮你!
Python脚本打包 exe,auto-py-to-exe来帮你!
826 0
|
前端开发
MVVM框架原理
MVVM框架(Model-View-ViewModel)是一种基于数据绑定的前端架构模式。它将视图逻辑与业务逻辑分离,提供了一种简单而清晰的方式来管理和组织代码。
812 0
|
Linux Perl
如何在Linux系统中确定CPU架构
如何在Linux系统中确定CPU架构
607 0
|
JavaScript 数据安全/隐私保护
Vue rules校验规则详解
Vue rules校验规则详解