Vue,嵌入iframe中的子页面,调用父页面方法

文章介绍了在Vue.js中,通过iframe实现父子页面通信的一种方法。父页面在mounted钩子中将方法绑定到window对象,子页面则通过window.parent调用这个方法,从而解决跨域调用问题。
摘要由CSDN通过智能技术生成

一、首先,假设我们有一个父页面:a.vue  其中有定义方法:

methods: {
        homePageCallBack:function(object){
            console.log(object);
        }
    },

父页面:a.vue 中,嵌入了 iframe 标签,src为子页面路径:

<template >
    <iframe src="子页面路径" frameborder=no style='width: 100%; height: 100%; border: 0; margin: 0; padding: 0;'></iframe>
</template>

二、假设子页面是 b.vue  那么在子页面中,想要调用父页面中的 homePageCallBack 方法,如果你是前端开发者,子调父的方法一般会尝试:

1、window.parent.homePageCallBack();

2、this.$parent.homePageCallBack();

等等

实际上,你也是因为上面的方式,无法调用成功,才来搜的,哈哈哈哈~

三、这里我推荐一种方案(并不是最优的,只是我能力范围内能正常解决的方案,因为我只是Java开发工程师)

1、首先在父页面 a.vue 中的mounted中加入如下代码:

mounted() {
    window.homePageCallBack = this.homePageCallBack;
  }

其作用就是,将这个方法作用域升级,使得子页面可以找到它

2、在子页面 b.vue 中的methods中加入如下代码:

methods: {
    toPage: function (object) {
        window.parent.homePageCallBack(object);
    },
}

调用该toPage方法即可,其实子页面还是正常通过window.parent去调用父类方法的,只需要父页面中将它的方法作用域升级到window里面让父页面能找到即可。

四、没有了,就这样就解决了。。。

恬恪学习网-彭珂

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值