项目中遇到的问题1:iframe嵌套跨域内容,src变更但内容未刷新问题

在项目中,遇到iframe嵌套跨域页面时,当A页面query参数改变,导致B页面内容未同步更新的问题。尝试了document.getElementById().contentWindow.location.reload(true)和重新赋值src等方法无效。最后通过在create钩子中动态创建并设置iframe解决,但这种方法可能影响性能,寻求更好的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**问题描述:**在A页面中通过iframe嵌套了B页面,B页面的内容是通过A页面的query里面的参数请求到的
使用watch监听了route变化,当query中传入的参数变更后就需要让iframe的src和内容同步变更,但在项目过程中,iframe随着变更了,但是iframe中的内容却没有同步更新

在网上查询到了下面的解决方法:
方法1:document.getElementById(iframe的id).contentWindow.location.reload(true);使用这种方法只能针对嵌套的内容是同源的,由于我嵌套的内容是跨域的所以使用这个方法会报错
方法2:给iframe的src重新赋值或者使用attribute重新设置src的值,这两种方法都尝试了,但内容还是无法更新

现在还是没有搞明白为什么地址变更了内容却没有同步更新,我猜测是页面没有刷新的原因

我使用的解决方法是:
在create钩子函数执行的时候,在iframe的父节点中动态创建一个iframe标签,同时设置src和width、height,然后用watch监听route的变化,有变化就重新执行这一部分操作,虽然知道这样对性能不太友好,但是暂时解决了我的问题,如果谁有更好的解决方案,可以和我交流下。

代码如下:

// 父节点
<div v-show="activeTab === 'staticData'" style="width:100%;textAlign:left;" id="iframe-box"></div>

create
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值