IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 用原生js的postMessage实现iframe传值,也可以用于跨域嵌套iframe传值 -> 正文阅读

[移动开发]用原生js的postMessage实现iframe传值,也可以用于跨域嵌套iframe传值

Window postMessage() 方法

定义和用法

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

语法

otherWindow.postMessage(message, targetOrigin, [transfer]);
参数说明
otherWindow其他窗口的一个引用,比如 iframe 的 contentWindow 属性、执行 window.open 返回的窗口对象、或者是命名过或数值索引的 window.frames。
message将要发送到其他 window的数据。
targetOrigin指定哪些窗口能接收到消息事件,其值可以是?*(表示无限制)或者一个 URI。
transfer可选,是一串和 message 同时传递的 Transferable 对象。这些对象的所有权将被转移给消息的接收方,而发送一方将不再保有所有权。

index.html

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>父页面</title>
</head>
<body>
<h1>这是父页面</h1>
<div>
    <textarea id="text" value="消息内容"></textarea><br>
    <button id="sendMessage">发送消息</button>
</div>

<br><br>

<h3>这是被嵌套的页面</h3>
<iframe id="receiver" src="iframe.html" width="300" height="200">
    <p>你的浏览器不支持 iframe。</p>
</iframe>
<script>
    var btn = document.querySelector("#sendMessage");
    var input = document.querySelector("#text");
    btn.addEventListener("click", function (e) {
        document.querySelector("#receiver").contentWindow.postMessage(input.value, "http://localhost:8888");//传信息给iframe页面
    });

    function getIframeMessage(msg) {
        input.value = "获取到了子页面的信息:" + msg;
    }
</script>
</body>
</html>

iframe.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>被嵌套页面</title>
</head>
<body>
<div id="recMessage">

</div>

<br><br>

<div>
    <input id="text" type="text" value="传递给父页面的消息内容"/>
    <button id="sendMessage">发送消息</button>
</div>

<script>
    var messageEle = document.getElementById("recMessage");
    //监听父页面传递的信息----------------------------------------
    window.addEventListener("message", function (e) {
        /*
        e.source – 消息源,消息的发送窗口/iframe。
        e.origin – 消息源的 URI(可能包含协议、域名和端口),用来验证数据源。
        e.data – 发送过来的数据。
        */
        if (e.origin !== "http://localhost:8888") return alert("未知来源地址:" + e.origin);  // 验证消息来源地址
        messageEle.innerHTML = "从" + e.origin + "<br>收到消息: " + e.data;
    });
    //传递信息给父页面----------------------------------------
    var btn = document.getElementById("sendMessage");
    btn.addEventListener("click", function (e) {
        var val = document.getElementById("text").value;
        window.parent.getIframeMessage(val);
    });
</script>
</body>
</html>

父页面传信息给子页面?


子页面传信息给父页面?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 13:12:56  更:2022-03-06 13:14:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 16:54:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码