vue中父元素動態獲取iframe高度
阿新 • • 發佈:2022-12-04
背景:在vue開發中(不論是vue2還是vue3),我在頁面中列印都可以拿到document.getElementById('iframe')的DOM節點,但就是在頁面中不顯示,需要等待iframe掛載上去,再進行響應的DOM操作,因此使用了setTimeout
例如:
<template> <iframe id="iframe" src="xxx" frameborder="0" class="iframe"></iframe> </template> <script> methods: { // 這裡的viewer是iframe中的子元素,實際開發中我這裡引入了pdfjs用來進行pdf線上展示,所以需要獲取viewer的高度 setIframeHeight(iframe) { let iframeWin = iframe.contentWindow || iframe.contentDocument.parentWindow if (iframeWin.document.getElementById('viewer')) { iframe.height = iframeWin.document.getElementById('viewer').scrollHeight } } }, mounted() { let ths = this // 需要在iframe載入完成後呼叫該方法,或者在$nextTick中進行方法呼叫,看實際情況 setTimeout(function() { ths.setIframeHeight(document.getElementById('iframe')) }, 1000) } </script>