介紹
https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage
window.postMessage
發送方

接收方

示例:父頁面(parentpage_copy.html)傳值給子頁面(subpage_copy.html)
parentpage_copy
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>父頁面</title> </head> <body> <p>2003年參演中國首部犯罪題材的電視劇《拯救少年犯》 [17] ,該劇由10個故事組成,文章是其中一個故事的男主角。 2004年參演葉京導演,改編自王朔小說的電視劇《與青春有關的日子》 [18] ,劇中文章飾演卓越一角,開始在影視圈嶄露頭角 [1] 。 2005年拍攝第一部古裝劇《錦衣衛》,該劇由張黎導演 電視劇《奮斗》劇照 電視劇《奮斗》劇照(19張) </p> <iframe src="http://****/test/iframe/subpage_copy.html" frameborder="0" id="iframe_id" width="100%" scrolling="no"></iframe> <script src="jquery-2.1.4.min.js"></script> <script> var iframe = document.getElementById('iframe_id'); var iframe_cw = iframe.contentWindow; window.onload = function(){ iframe_cw.postMessage({height:"300px"}, "*"); //通信 * 可以指定域名
} </script> </body> </html>
子頁面(subpage_copy.html)
<html data-width="375" data-percent="50" class="iosx1" style="font-size: 50px;"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=0"> <title>頭條巴士</title> <style> html { font-family: PingFangSC-Regular, HelveticaNeue-Thin, "微軟雅黑", helvetica, verdana, sans-serif, roboto, NotoSansHand-Regular, "冬青黑體", "華文細黑"; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; height: 100%; } body { margin: auto; line-height: 1.5; color: #000; overflow-x: hidden; -webkit-overflow-scrolling: touch; height: 100%; padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); } h1, h2, h3, h4, h5, h6, p, figure, form, blockquote { margin: 0; } h1 { font-size: 0.44rem; color: #393939; line-height: 0.62rem; } .content { padding: 0.2rem 0.36rem 0.2rem 0.36rem; } .content .source { font-size: 0.24rem; line-height: 0.33rem; margin-top: 0.2rem; margin-bottom: 0.34rem; color: #acacac; } .content, .content p { color: #393939; font-size: 0.36rem; line-height: 0.6rem; text-align: justify; margin-bottom: 0.4rem; } .content figure a { display: block; position: relative; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAAAtCAMAAADP2JRpAAAAM1BMVEXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eU6Er+wAAAAEHRSTlMAAQQJEBkkMT9QY3iPqMPghcKzlQAAA19JREFUaN7FmkmigyAMQMMgphSB+5/2L5QZadDWn12R6RnIZAEuCpO7CFp3vvfmcFOOZfMmhVRh+bCX3+VNW/i9915Si5CNNC9D7qOwaQEAuR4YxhPFFHPbo1XRAI5VZNNyvsIQgG3eeyumAJbiSIRWwqFQiHjw6qDNIYAJsu3tNvzWEUB77713bALAwqTG4pvrjRgCnE6oAoBwSf/UDalpAMe+DOBYAJDZKyJuyME0gIYvA7ziHZBucAPDzHJ4HQnCKQAGEdHQAHgCQO+99xv8EuANFAAEAMBZKyQBvfeGXQF4GWPiljZzLvl4jDu5CcDi3tipV/wAAAAgAgAjOtBjhysNIHq29bhMmbM7Jgo/+TWANSiAGgEkP0YBoBtqfxFgS2bhfwEOQ5fcIw2A+U4XHA1z8cR9F4CXA6gAqhxAAEj9vwqg4RqA7gVfIwCWohEKQIqCXGPbiuiIXwRwEUCkmW1jWd+1OTRANqOvxoAWe8WugqkAMrl+SYjlLgEcGmjTJVucnSGArhMaUeUyHwAcq80uEgEUhvNYb0EewwzwvYEPAE43tNEAXj1HTLsDA6sTAHQe49MAsM5lPgDw5tYvdwF0eGZ4EY3SAFhtRMcAup9Q3gIQEaBQAA1AV/n5jBk16UreATDxmS3TARIAh8bNkAGy+UmXOM8VKitiOlnuCcDaL3lwjDbiVwBBySoEpqJ1okU+NuvIYBJAZN1JAL4KnUy7TK6AnwPISYAlBesjAPUYwJKZAQqATo5kAGDhMYDMj5EA7MA5YkcBTwGscDuc5gnAwnMA7+zJLQCdHSH1IID5FoBIcYCFBwFsNj0xoSnzFxdquymWV08C+EmAZqhpTLKF5wHsVwCWXlH0xwC5H7sNYHr1oGcA3nDfjCrZXeUygDKjpN5gk1COAdZPAI5tzeZUVqrdl3WnhVtZA+C4bCNrRyxDIOsigE3wCj4BYMwHZS84on5kogLYsgiwpMWcaNMOJ+AjAIsPdUwRJgCa6E/jzEcpGQGcaPOmLYv5z/wAtnRsAqCO/rQcD7at4cCs2lMCbGx020znwjaxxYQCwHv34p/OH1aFvNhftZmrHpqLTZ0BiAmArE4FVlG/bJSOGLMXYbo1vHbstvZt/onj+IVM/amijsSbLxhloQ7+AOTgG5nWBE8IAAAAAElFTkSuQmCC); background-color: hsla(0, 0%, 59%, .1); background-repeat: no-repeat; background-position: 50%; overflow: hidden; background-size: 40%; } .content img { width: 100%; } .content figure a img { position: absolute; left: 0; top: 0; } .bus_back { line-height: .8rem; color: #000; display: block; text-align: right; margin: .4rem .4666rem; font-size: .36rem; color: #ff6060; } </style> </head> <body style="width: 375px;"> <script> !(function (e, t) { var n = e.documentElement, i = "orientationchange" in window ? "orientationchange" : "resize", d = (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream, function () { var t = n.clientWidth; t && (t >= 750 ? (t = 750, e.body.style.width = "750px") : e.body.style.width = t + "px", n.style .fontSize = 100 * (t / 750) + "px", n.dataset.width = t, n.dataset.percent = 100 * (t / 750)) }); d(), e.documentElement.classList.add("iosx" + t.devicePixelRatio), e.addEventListener && t.addEventListener(i, d, !1) })(document, window) </script> <div class="content"> <section class="header"> <p id="messageHTML"></p> <h1>小沈陽老婆經歷了啥?如今瘦身成功,長相撞臉韓國女星孔孝真</h1> <p class="source"> 2019-10-23 18:00:57 來源:火姿微觀 </p> </section> <section> <p> </p> <p> </p> <p>沈春陽,她是著名的二人轉演員,更是知名藝人小沈陽的妻子。二人轉出身的她,在喜劇舞台上游刃有余,同時在演戲方面,也是可以做到得心應手。</p> <p>在電視劇櫻桃中,沈春陽挑大梁,為眾人帶來了一部鄉村苦情劇。這部電視劇,感動了無數的觀眾,更是讓沈春陽的名字多次被人提起。但后來的沈春陽,就似乎回歸家庭了,她很少出現在公眾的面前,似乎在專心的照顧家庭。</p> <p type="image"> <span> </span></p> <figure class="figure-photo-img"><a data-size="640x536" data-href="https://ttbs.guangsuss.com/image/bf8ed440e71d2552e0a3d4b4fd8eaf16" style="padding-bottom: 83.75%;"><img data-original="https://ttbs.guangsuss.com/image/bf8ed440e71d2552e0a3d4b4fd8eaf16" src="https://ttbs.guangsuss.com/image/bf8ed440e71d2552e0a3d4b4fd8eaf16" class="lazy" data-was-processed="true" style="display: block;"></a></figure> <p></p> <p></p> <p>不過,即便是沈春陽如此低調,網友還是發現了一些不一樣的事情。</p> <p>有網友就發現,如今的沈春陽,長相大氣,更是膚白貌美,還撞臉了韓國的知名演員孔孝真。這樣大的變化,也讓不少的網友好奇,小沈陽的老婆究竟是經歷了什么。</p> <p type="image"> <span> </span></p> <figure class="figure-photo-img"><a data-size="640x496" data-href="https://ttbs.guangsuss.com/image/ab5f54e4e42aa28b291ddb90ed876ec9" style="padding-bottom: 77.50%;"><img data-original="https://ttbs.guangsuss.com/image/ab5f54e4e42aa28b291ddb90ed876ec9" src="https://ttbs.guangsuss.com/image/ab5f54e4e42aa28b291ddb90ed876ec9" class="lazy" data-was-processed="true" style="display: block;"></a></figure> <p></p> <p></p> <p>其實,這也未必是沈春陽做什么了!如今的沈春陽,手中有錢,家庭幸福,什么都不愁的她,自然是要有些變化的。更何況,沈春陽的五官還是不錯的,也是有點像韓國女星孔孝真的。如今的沈春陽瘦下來之后,會撞臉孔孝真,其實到也正常,不是嗎? </p> <p type="image"> <span> </span></p> <figure class="figure-photo-img"><a data-size="640x409" data-href="https://ttbs.guangsuss.com/image/3f23683cbfb2bc0e798c69200c658343" style="padding-bottom: 63.91%;"><img data-original="https://ttbs.guangsuss.com/image/3f23683cbfb2bc0e798c69200c658343" src="/static/img/1.gif" class="lazy" data-was-processed="true"></a></figure> <p></p> <p></p> <p>而且,觀眾對沈春陽的印象,大多都停留在了她所飾演的角色當中。</p> <p type="image"> <span> </span></p> <figure class="figure-photo-img"><a data-size="339x230" data-href="https://ttbs.guangsuss.com/image/fecca0fce8eeeb4f8e9f34bbc5805d45" style="padding-bottom: 67.85%;"><img data-original="https://ttbs.guangsuss.com/image/fecca0fce8eeeb4f8e9f34bbc5805d45" src="/static/img/1.gif" class="lazy" data-was-processed="true"></a></figure> <p></p> <p></p> <p>當年的沈春陽,與小沈陽一起搭檔舞台的時候,她穿着土氣的毛衣,背着一個奇怪的小包,還剪着一個土土的鍋蓋頭,戴着一個黑框眼鏡。這大概是不少人對沈春陽的第一印象,但這樣的形象,也讓不少的人覺得沈春陽似乎就應該長這樣。</p> <p type="image"> <span> </span></p> <figure class="figure-photo-img"><a data-size="640x492" data-href="https://ttbs.guangsuss.com/image/0ee40309dfaf5d5419fbcd560c3eb065" style="padding-bottom: 76.88%;"><img data-original="https://ttbs.guangsuss.com/image/0ee40309dfaf5d5419fbcd560c3eb065" src="/static/img/1.gif" class="lazy" data-was-processed="true"></a></figure> <p></p> <p></p> <p>更不用說,在櫻桃中,她又飾演的是一個精神有些問題的農村婦女。所以,在一般人的印象當中,沈春陽似乎就不應該與時尚掛鈎。但如今的沈春陽,卻用自己的真實樣貌告訴觀眾,自己其實也還是挺漂亮的。</p> </section> <a class="bus_back" href="/a/1684281751425389876/?qid=z00321"> <svg t="1561693688103" class="icon" viewBox="0 0 1194 1024" version="1.1" xmlns="//www.w3.org/2000/svg" p-id="1183" width="200" height="200" style=" width: 0.36rem;height: 0.36rem;vertical-align: middle;margin-right: 0.15rem;margin-top: -0.1rem;"> <path d="M795.497086 512.426311L0 1024V0zM1193.67194 512.426311l-795.497086 511.573689V0z" fill="#ff6060" p-id="1184"></path> </svg>查看全文</a> <section class="bt_no" style="display: none"> <div id="h5_xuni" class="h5_xuni bt_no" data-loc="h5_xuni" data-id="1568287861bCBpObB6Wp8szzXw5d7a2c75eb107" data-ad_type="baidu_ssp" data-strategy_id="1832" data-filter="1832"></div> </section> <section class="bt_no"> <div id="h5_fz" class="h5_fz bt_no" data-loc="h5_fz" data-id="1567590343CsSWTNdGv0EU86ve5d6f87c7bc3b2" data-ad_type="baidu_ssp" data-strategy_id="2196" data-filter="2196"> <script type="text/javascript" src="/static/js/clipboard.js"></script> </div> </section> <section class="bt_no"> <div id="h5_tz" class="h5_tz bt_no" data-loc="h5_tz"></div> </section> </div> <script src="jquery-2.1.4.min.js"></script> <script> window.addEventListener('message', function (event) { document.getElementById('messageHTML').innerText = event.data.height; }, false); </script> </body> </html>
簡單介紹主要代碼 監聽Message
<script> window.addEventListener('message', function (event) { document.getElementById('messageHTML').innerText = event.data.height; }, false);
在子頁面就會看到

紅框上部分為 :父頁面內容
紅框區域為: 父傳字頁面值。。。在子頁面顯示
紅框下部分為: 子頁面區域
===========================================================================
接下來,,,,
子頁面傳給父頁面值,具體點,把子頁面內容在父頁面全部展示;讓iframe能自適應文章內容
沒有傳值前,主頁面加載iframe內容,未全展示。。。。如下:

獲取子頁面內容區域高度。。。傳給父頁面。是不是就OK了。。。。。趕緊試一試,不然就忘了。。。人到中年。。。寫代碼全靠copy
子頁面代碼
<script> window.onload = function(){ var c_h = $(".content").height(); // 獲取內容區域高度 window.parent.postMessage({height:c_h}, 'http://127.0.0.1'); // 可以指定域名 } </script>
父頁面代碼
<script>
var iframe = document.getElementById('iframe_id');
var iframe_cw = iframe.contentWindow;
window.addEventListener('message', function (event) {
iframe.style.height = event.data.height + 'px'
}, false);
</script>
傳值后:內容全部展示

==============================================================
接下來,,,串連下。。父傳子,子又傳父(互相傳值)
父頁面
<script>
var iframe = document.getElementById('iframe_id');
var iframe_cw = iframe.contentWindow;
//發送消息
window.onload = function(){
var message = 'Hello! The time is: ' + (new Date().getTime());
iframe_cw.postMessage(message, "*");
}
window.addEventListener('message', function (event) {
console.log('index: ' + event.data);
iframe.style.height = event.data.height + 'px'
}, false);
</script>
子頁面
<script> window.addEventListener('message', function (event) { console.log('message lister: ' + event.data, event); var c_h = $(".content").height(); event.source.postMessage({height:c_h}, event.origin); }, false); </script>


