1. 程式人生 > 其它 >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>

遇見問題,這是你成長的機會,如果你能夠解決,這就是收穫。

作者:明月人倚樓
出處:https://www.cnblogs.com/IwishIcould/

想問問題,打賞了卑微的博主,求求你備註一下的扣扣或者微信;這樣我好聯絡你;(っ•̀ω•́)っ✎⁾⁾!

如果覺得這篇文章對你有小小的幫助的話,記得在右下角點個“推薦”哦,或者關注博主,在此感謝!

萬水千山總是情,打賞5毛買辣條行不行,所以如果你心情還比較高興,也是可以掃碼打賞博主(っ•̀ω•́)っ✎⁾⁾!

想問問題,打賞了卑微的博主,求求你備註一下的扣扣或者微信;這樣我好聯絡你;(っ•̀ω•́)っ✎⁾⁾!

支付寶 微信 本文版權歸作者所有,歡迎轉載,未經作者同意須保留此段宣告,在文章頁面明顯位置給出原文連線
如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。