项目场景:
准备3个html页面,层级结构是 a.html <= b.html , <= c.html
a.html是最顶层父页面
问题描述:
a.html
中引入 b.html
<body>
<iframe src="./b.html" frameborder="0" class="son" id="son1"></iframe>
</body>
a.html中定义变量aaaa=1
<script type="text/javascript">
window.aaaa = 1
console.log(top);
console.log(window);
console.log(window.top);
console.log(window.self);
console.log(window.parent);
console.log(parent);
console.log("-=-=-=-=-=-=-=-=-=-=-=-=");
</script>
b.html
中引入 c.html
<body>
<iframe src="./c.html" frameborder="0" class="son" id="son2"></iframe>
</body>
b.html中定义变量aaaa=2
<script type="text/javascript">
window.aaaa = 2
console.log(top);
console.log(window);
console.log(window.top);
console.log(window.self);
console.log(window.parent);
console.log(parent);
console.log("-=-=-=-=-=-=-=-=-=-=-=-=");
</script>
c.html
中定义变量aaaa=3
<script type="text/javascript">
window.aaaa = 3
console.log(top);
console.log(window);
console.log(window.top);
console.log(window.self);
console.log(window.parent);
console.log(parent);
console.log("-=-=-=-=-=-=-=-=-=-=-=-=");
</script>
最终输出结果:
a.html
中
<script type="text/javascript">
window.aaaa = 1
console.log(top); //aaaa = 1
console.log(window); //aaaa = 1
console.log(window.top); //aaaa = 1
console.log(window.self); //aaaa = 1
console.log(window.parent); //aaaa = 1
console.log(parent); //aaaa = 1
console.log("-=-=-=-=-=-=-=-=-=-=-=-=");
</script>
在最顶层a.html
中 所有window对象中顶层的aaaa都等于1
b.html
中
<script type="text/javascript">
window.aaaa = 2
console.log(top); //aaaa = 1
console.log(window); //aaaa = 2
console.log(window.top); //aaaa = 1
console.log(window.self); //aaaa = 2
console.log(window.parent); //aaaa = 1
console.log(parent); //aaaa = 1
console.log("-=-=-=-=-=-=-=-=-=-=-=-=");
</script>
在b.html
中 单独window对象
和window.self
指向了b.html
本身的window
对象,其余的top
parent
指向了父级window
c.html
中
<script type="text/javascript">
window.aaaa = 3
console.log(top); //aaaa = 1
console.log(window); //aaaa = 3
console.log(window.top); //aaaa = 1
console.log(window.self); //aaaa = 3
console.log(window.parent); //aaaa = 2
console.log(parent); //aaaa = 2
console.log("-=-=-=-=-=-=-=-=-=-=-=-=");
</script>
在c.html
中 单独window对象
和window.self
依然指向了c.html
本身的window
对象。
top
和window.top
指向了最顶层的a.html
。
window.parent
parent
指向了b.html
。
所有在iframe
中,
window
和window.self
最终都是指向自己本身拥有的window
。
top
和window.top
都是指向最顶层的window
,最开始的window。
parent
和window.parent
指向本级window
的父window
,不会
指向最开始的祖先window
。
微信群大佬都在等着你
微信扫描二维码加入微信群,交流学习,及时获取代码最新动态。
