iframe元素在網頁中被廣泛使用,然而iframe反映的是最初加載時的頁面,難以直接更新其中的內容。在Vue.js中,我們可以通過一些技巧,讓iframe中的內容實時更新。
首先,我們需要在iframe的父組件中維護一個變量,用于標識是否需要刷新iframe。在父組件中,我們可以使用computed屬性實現:
<template> <div> <iframe ref="iframe" :src="iframeSrc"></iframe> </div> </template> <script> export default { data() { return { needIframeRefresh: false }; }, computed: { iframeSrc() { return this.needIframeRefresh ? 'reset.html' : 'original.html'; } } } </script>
在以上代碼中,當needIframeRefresh變量值變化時,iframeSrc計算屬性的返回值也隨之變化,從而在iframe標簽中重新渲染新的src。
接下來,我們需要在子組件中控制needIframeRefresh的值,以及在子組件中觸發needIframeRefresh變化時,讓這種變化在父組件中反映出來。之前提到,iframe的刷新需要重新加載iframe的src,所以在子組件中,我們將重新生成iframe的src地址,并將其傳遞給父組件:
<template> <div> <button @click="refresh">刷新</button> </div> </template> <script> export default { methods: { refresh() { const newSrc = 'reset.html'; this.$parent.needIframeRefresh = true; } } } </script>
在以上代碼中,我們通過this.$parent.needIframeRefresh訪問到了父組件中的needIframeRefresh變量,并將其設為true。這樣,在父組件中,computed屬性會發生變化,iframe標簽的src就會刷新。這一刷新動作會重新執行iframe頁面中的JavaScript代碼,從而實現頁面的動態更新,達到“刷新”的效果。
上一篇idea集成vue