本文討論都是在同域(同一域名,同一端口近速,同一協(xié)議)下進(jìn)行诈嘿。
以下我們討論三個問題:1、iframe子頁面和父頁面相互獲取元素削葱,2奖亚、iframe子頁面和父頁面相互調(diào)用方法和變量。
一. iframe子頁面和父頁面相互獲取元素
- 子頁面獲取父頁面元素
//獲取父頁面 $("#id")的元素
Js原生:window.parent.document.getElementById ("元素id");
Jquery: $("#id", parent.document);
- 父頁面獲取子頁面元素
//獲取子頁面 $("#id")的元素
Js原生:window.frames[iframe序號].document.getElementById("元素id")
;
Jquery:$("#iframeID").contents().find("#元素ID")
;
二. iframe子頁面和父頁面相互調(diào)用方法和變量
- 子頁面調(diào)用父頁面方法和變量
//調(diào)用父頁面方法和變量
window.parent.func();
//調(diào)用方法
window.parent.value;
//調(diào)用變量
- 父頁面調(diào)用子頁面方法和變量
//調(diào)用子頁面方法和變量
window.frames[iframe序號].func();
//調(diào)用方法
window.frames[iframe序號].value;
//調(diào)用變量
說明:
iframe
之間相互通信的前提是頁面加載完成,所以我們從上面可以看到 父頁面獲取子頁面元素干厚,調(diào)用子頁面方法李滴、變量時使用了window.frames[0].onload =function(){}
包裹來確保子頁面加載完成。父頁面獲取子頁面iframe內(nèi)容不止上述一種方法蛮瞄,還可以
iframe
的id
和iframeName
來獲取所坯,即document.getElementById('iframeId').contentWindow.document.getElementById('子頁面中的元素ID');
和iframeName.window.document.getElementById('子頁面中的元素ID');