1. 程式人生 > 其它 >vue中父元素動態獲取iframe高度

vue中父元素動態獲取iframe高度

背景:在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>