有个需求是从父级的页面中传值到iframe的子页面中,然后再子页面中渲染。也可以从父页面中获取子页面的数据,具体如下
子页面获取父页面数据
父页面中进行传送数据
<!DOCTYPE html>
<html>
<head>
<title>父页面</title>
</head>
<body>
<button onclick="toParent()">传值按钮</button>
<div class="parent">
<iframe id="iframes" src="./b.html"></iframe>
</div>
</body>
<script>
function toParent(){
let iframes = document.getElementById("iframes")
iframes.contentWindow.postMessage({
data:{
name:666
}
},'*')
}
</script>
</html>
子页面进行接收
<!DOCTYPE html>
<html>
<head>
<title>子页面</title>
</head>
<body>
<div onclick="toParent()">
<span>子页面接收数据为</span>
<span id="children"></span>
</div>
</body>
<script type="text/javascript">
window.addEventListener('message',(e)=>{
console.log(e)
document.getElementById('children').innerHTML = e.data.data.name
})
</script>
</html>
父页面接收子页面的数据
父页面接收
<!DOCTYPE html>
<html>
<head>
<title>父页面</title>
</head>
<body>
<div class="parent">
<iframe id="iframes" src="./b.html"></iframe>
</div>
<div id="father"></div>
</body>
<script>
window.addEventListener('message',(e)=>{
console.log(e)
document.getElementById('father').innerHTML = e.data.data.name
})
</script>
</html>
子页面传送
<!DOCTYPE html>
<html>
<head>
<title>子页面</title>
</head>
<body>
<button onclick="toParent()">传值按钮</button>
</body>
<script type="text/javascript">
function toParent(){
window.parent.postMessage({
data:{
name:666
}
},'*');
}
</script>
</html>