とあるサイトで、
以下のコードを見つけたのですが、
javascript
1parent.postMessage({name: window.name}, window.location.origin);
.postMessage()の文法をみると、
「otherWindow.postMessage(message, targetOrigin, [transfer]);」
と書いてありました。
実際に、postMessage()にnameはあるのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
実際に、postMessage()にnameはあるのでしょうか?
入れても構いません。message
には、(送る側と受け取る側が処理できて、そしてシリアル化可能であれば)好きな形のオブジェクトを渡せます。
投稿2020/11/27 09:02
編集2020/11/27 09:04総合スコア146018
0
//me.html
HTML
1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelector('#btn').addEventListener('click',()=>{ 4 var win=document.querySelector('#hoge').contentWindow; 5 win.postMessage({name:"hoge"}); 6 }); 7}); 8</script> 9<iframe src="you.html" id="hoge"></iframe> 10<input type="button" value="change" id="btn">
//you.html
html
1<script> 2window.addEventListener('message',(e)=>{ 3 document.querySelector('#fuga').textContent=e.data.name; 4}); 5</script> 6<div id="fuga">fuga</div>
投稿2020/11/27 09:34
編集2020/11/27 09:34総合スコア116724
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
コメントありがとうございます。
以下の場合、
どのように応用して書けば、
「you.htmlの中にあるid=yoyakuの高さを、me.htmlはiframe id="fuga"のみ受け取れるのでしょうか?
頂いたコードをもとに考えているのですが、
まだ分かりません。
//me.html
```HTML
<iframe id="fuga" src="you.html"></iframe>
<script>
window.addEventListener('message', function(e) {
if(e.origin=="https://hoge.com"){
document.getElementById("fuga").height = e.data;}},false);
</script>
```
//you.html
```HTML
<div id="yoyaku"></div>
function clientHeight() {
var h = window.document.getElementById('yoyaku').clientHeight;
window.parent.postMessage(h, "*");
}
```
2020/11/27 11:58
//me.html
<script>
window.addEventListener('DOMContentLoaded', ()=>{
});
window.addEventListener('message',(e)=>{
document.querySelector('#fuga').style.height=e.data;
});
</script>
<iframe src="you.html" id="fuga"></iframe>
//you.html
<script>
window.addEventListener('DOMContentLoaded',(e)=>{
parent.postMessage(document.querySelector('#yoyaku').getBoundingClientRect().height);
});
</script>
<div id="yoyaku">
test<br>
test<br>
test<br>
test<br>
test<br>
test<br>
</div>
2020/11/27 11:59
でも上記yoyakuはmarginやpaddingがあるのでもとのiframeのサイズより大きいですよ
退会済みユーザー
2020/11/28 01:21
ありがとうございます。比較できて大変、勉強になりました。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/27 09:03
退会済みユーザー
2020/11/27 11:11