vue 给iframe设置src_vue 中引入iframe,动态设置其src,遇到的一些小问题总结

1.重置其样式,去掉外框以及滚动条等

id="myIframe"

ref="iframe_a"

:src="mySrc"

width="100%"

height="100%"

frameborder="no"

border="0"

marginwidth="0"

marginheight="0"

scrolling="no"

allowtransparency="yes"

/>

2.在mounted里也找不到iframe 的dom元素,于是用了很笨的办法去处理,希望路过的大佬可以指点一下,有好的办法教教我好吗??

export default {

data() {

return {

mySrc: '',

loading: true, // 如果正在加载,就会盖住展示内容

timer: null, // 第1个定时器

timer1: null // 第2个定时器

}

},

mounted() {

if (this.$refs && this.$refs['iframe_a']) {

this.setLoading(this.$refs['iframe_a'])

} else {

// console.log('延时加载第一次')

clearTimeout(this.timer1)

this.timer1 = setTimeout(() => {

this.setLoading(this.$refs['iframe_a'])

}, 500)

}

},

destroyed() {

this.timer = null

this.timer1 = null

},

methods: {

// 补坑函数1

setLoading(iframeDom) {

if (iframeDom) {

// console.log('找到元素了,执行iframeDom.onload')

const iframeD = document.getElementById('myIframeWebgl')

iframeD.onload = () => {

// console.log('加载完了-----------')

this.loading = false

}

iframeD.src = this.setRoute()

} else {

this.setTim()

}

},

// 补坑函数2

setTim() {

const iframeD = document.getElementById('myIframe')

clearTimeout(this.timer)

this.timer = setTimeout(() => {

// console.log('延时加载第----次')

this.setLoading(iframeD)

}, 200);

},

}

}

3.在此之前,加载完成的onload事件有时候不会触发,点击页面有时候没有反应,地址改了但是页面没有变动,于是解决如下:

问题在于: iframe的绑定地址的代码一定要放在onload下面,要不然就完了

如果使用原生来写,大概这样子

let myIframeDiv= document.querySelector('#myIframeDiv')

let iframe = document.createElement('iframe')

iframe.onload = () => {

console.log('这样子就没问题了')

}

iframe.src = this.src // 就是这一行代码,一定要注意哦

myIframeDiv.appendChild(iframe)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Vue,如果iframesrc属性重复刷新,可能是因为Vue的数据绑定机制导致的。当数据发生变化时,Vue会自动重新渲染组件,如果iframesrc属性绑定了一个动态的数据,每次数据变化时都会导致iframe重新加载。解决方法可以使用v-if指令来控制iframe的显示和隐藏,或者使用key属性来强制组件重新渲染。 ### 回答2: 在Vue使用iframe元素时,如果iframesrc属性重复刷新,可能会遇到一些问题。这个问题通常出现在开发人员使用Vue.js框架在应用程序不断更改组件,或者在动态加载组件时。经过分析,可以得出这是因为iframe无法保存其状态,因此每次刷新它都会加载完整的网页。 为了解决这个问题,有几种方法可以尝试。首先,可以考虑使用Vue的keep-alive组件来缓存已经加载的组件,避免重复刷新。在使用keep-alive时,需要确保在组件的任何逻辑不会对iframesrc属性进行任何更改。此外,还可以使用Vue的v-show指令来显示或隐藏iframe元素,而不是动态更改src属性。 另外,也可以考虑使用Vue的watcher机制来监视src属性的更改,并在必要时进行调整。具体来说,可以在Vue组件对象定义一个watcher,以便在发现src属性更改时执行适当的逻辑。例如,如果src属性一直重复刷新,则可以在watcher设置一个标志来指示iframe是否已经加载,以便避免重复加载。 最后,如果上述方法都无法解决问题,则可能需要使用Vue的异步组件功能。异步加载组件可以避免在每次更改时重新加载整个组件,从而提高性能并将iframe的刷新次数降至最低。 综上所述,iframesrc重复刷新是一个常见的Vue.js应用程序问题。为了解决这个问题,开发人员可以考虑使用Vue的keep-alive,v-show或watcher机制,或者使用异步组件来优化应用程序并减少iframe的刷新次数。 ### 回答3: vueiframesrc重复刷新是指在不更改iframesrc属性时,对iframe进行多次重载或刷新操作。这种现象通常出现在需要通过iframe嵌入外部网页或应用程序的情况下。 造成这种问题的主要原因是由于vue的强制刷新机制。在vue,当组件状态发生变化或数据更新时,vue会根据v-for、v-if、v-show等指令重新渲染组件,并将新的DOM插入到页面。针对iframe的嵌入,这会使iframesrc属性重新加载,从而导致重复刷新。 为了解决这个问题,可以使用vuevue-iframe插件来代替原生的iframe标签进行嵌入。vue-iframe插件采用的是vue的数据渲染方式,将iframe当作一个子组件进行管理。这样,即使在重新渲染组件时,也不会影响到iframesrc属性,避免了重复刷新。 另一种解决方案是通过监听iframe的load事件来控制iframe的刷新。在iframe设置监听事件,在事件动态更改iframesrc属性来达到刷新的目的。只有当需要刷新页面时才触发iframe的load事件,这样就可以避免多次重复刷新的问题。 总之,在vue使用iframe标签进行嵌入时,需要注意原生iframe标签的刷新特性,同时可以采用vue-iframe插件、监听iframe的load事件等方式来避免重复刷新的问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值