父頁面通過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://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SO3cjM2cjY4EzNyEGM3ATMzYzX0EzM0YTMxAzLclDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
遇見問題,這是你成長的機會,如果你能夠解決,這就是收獲。
作者:晚來南風晚相識