vue判斷iframe加載完成

需求描述: 最近,項目中遇到iframe引入頁面,並給iframe內部全部元素註冊點擊事件得需求。html

在註冊事件以前,首先咱們要獲取iframe內部元素。跨域問題已被後端老哥解決。後端

最初的想法: 項目採用VUE,想法是在nextTick鉤子裏面獲取到iframe的內部dom.事實上,在最簡單的狀況下,也就是iframe內部沒有其餘iframe元素時能夠成功。若是iframe內部嵌套多個iframe,此時並不能註冊成功,暫時解決方法就是定時器輪詢,功能實現卻是能夠,可是做爲最終麼有辦法的方案。跨域

解決方法: 後來找到,iframe自帶有load方法,在iframe加載完成後執行的鉤子。bash

多說無益,貼代碼dom

html:
<iframe id="ifra" name="ifra" width="100%" height="500" src="http://xxxxx">
</iframe>
複製代碼
mounted() {
    const self = this
    this.$nextTick(() =>{
    	const iframe = document.querySelector('#ifra')
    	if (iframe.attachEvent) {    
    		iframe.attachEvent("onload", function() {    
    			const iframeNode = window.frames["ifra"].document
    			self.getDom(iframeNode)			
    		});    
    	} else {    
    		iframe.onload = function() {    
    			const iframeNode = window.frames["ifra"].document
    			self.getDom(iframeNode)
    		};    
    	}
    })
}
複製代碼
相關文章
相關標籤/搜索