需求描述: 最近,項目中遇到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)
};
}
})
}
複製代碼