2024年最全Vue进阶(八十六):iframe 结合 window,2024新鲜出炉阿里巴巴面试真题

结尾

正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。

以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

前端学习书籍导图-1

data中定义src引入端口号为8081的页面:

src:"http://127.0.0.1:8081/#/Login",

那么问题就来了,嵌入的登录模块属于子页面(另一个项目,端口号8081)的东西,如何能让我自己的页面知道用户点击了蓝色按钮,达到登录后隐藏登录框的效果呢?在这里,postMessage就派上了用场。

2.2 postMessage 实现父子页面通信

window.postMessage中的windowiframe中是指什么呢?

在这里插入图片描述
我们首先要获取到iframecontentWindow属性放到mounted钩子函数中。

mounted() {
  this.iframeWin = this.$refs.iframe.contentWindow;
},

目标源写成 * ,具备了两个必要参数,我们就可以开始使用postMessage了。

2.3 子页面向父页面传值

在这个项目中,我需要在点击login按钮(子页面),并且登陆成功后在父页面中隐藏登录模块。

父页面如何才能知道用户点击了子页面按钮?

postMessage只是一个沟通的桥梁。

子页面说话,父页面需要听到。所以我们在父页面的mounted函数中写一个监听。

mounted() {
    window.addEventListener('message', this.handleMessage);
    this.iframeWin = this.$refs.iframe.contentWindow;
},

下面为完整代码

子页面代码:

 submit() {
   // 向父vue页面发送信息
   window.parent.postMessage({
     data: {
       code:"success",
       test:"我是子页面的test!"
     }
   }, '\*');
 }

父页面代码:

<div class="login" v-if="!loginStatus">
   <iframe id="myframe" name="myframe" :src="src" ref="iframe" scrolling="no" width="350px" height="350px"  frameborder="0"></iframe>
</div>
 methods: {
     handleMessage (event) {
       const data = event.data.data
        if(data.code === "success"){
            alert(data.test)
        }
     }
}

mounted() {
    window.addEventListener('message', this.handleMessage);
    this.iframeWin = this.$refs.iframe.contentWindow;
},

2.4 父页面向子页面传值

父页面代码:

sendMessage () {
   // 外部vue向iframe内部传数据
   this.iframeWin.postMessage({
   		cmd: 'success',
   		data: "我是来自父页面的data!"
	}, '\*')
}



### 总结

* 框架原理真的深入某一部分具体的代码和实现方式时,要多注意到细节,不要只能写出一个框架。

* 算法方面很薄弱的,最好多刷一刷,不然影响你的工资和成功率😯

* 在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。

* 要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!!

  **[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)**

![](https://img-blog.csdnimg.cn/img_convert/6c250b6200355d0edce85b970db267bd.png)

喜欢这篇文章文章的小伙伴们点赞+转发支持,你们的支持是我最大的动力!



topics/618166371)**

![](https://img-blog.csdnimg.cn/img_convert/6c250b6200355d0edce85b970db267bd.png)

喜欢这篇文章文章的小伙伴们点赞+转发支持,你们的支持是我最大的动力!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值