iframe的contentWindow属性

12 篇文章 0 订阅

最近在给项目搭建功能的过程中遇到了个难题,因为在设计该项目时给的iframe子页面非常多,从头到尾数下来的话起码得有十多个子页面,但子页面多也并不是件好事

  1. 几乎每个子页面都需要用到父页面的中的方法,打开存放在父页面中与该业务相关的模态框、遮罩层,或是让父页面刷新,这都需要通过js中的parent属性去实现
  2. 反过来说,父页面也始终会用到子页面中定义好的方法,而我现在碰上的难题便是如此。(比如在父中需要点击左侧菜单,触发子iframe中的某个事件,这个解决办法我在以前admin的maya代码中使用父中点击触发iframe.contentWindow.chilrenEvent ,iframe中套的是vue的页面,也就是子是一个vue组件,在vue组件的mounted中定义window.chilrenEvent
  3. 具体代码见下面:
    一:父是admin原生开发的html页面(/admin/views/index.html#/oragnizationchildren是打包后放在服务器的页面访问路径)
				<buttton onclick="initPage"></button>
				<iframe id="iframe" src="C/file/DSS/admin/views/index.html#/oragnizationchildren"></iframe>
				<script>
					function initPage(){
							//触发iframe.contentWindow.chilrenEvent
							var iframe=$("#iframe")
							iframe[0].contentWindow.chilrenEvent&&iframe[0].contentWindow.chilrenEvent()
						}
				</script>
				
				

二:子的vue组件中

		method(){
				requstajax(){
						//请求接口刷新页面数据
				}
		},
		 mounted(){
				var that=this
		 		window.chilrenEvent=()=>{
		 				that.requstajax()
		 		}
		 }

子调用父的方法我知道通过parent属性便可以搞定,但让父调用子的方法,确实是不懂该如何解决,但当时可以想到的是:既然有parent这种属性可以帮助我们让父调用子中的方法,那么也一定会有和parent类似作用的属性存在,所以接下来我便只好在求助万能的互联网。在互联网大哥的帮助下,果然不出我所料,让我找到了本期的主人公ContentWindow属性。

也许是ContentWindow属性比较冷门吧,在W3school离线学习文档中找不到它的存在,但是它却是真实有效的,完全可以在js中被使用:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值