5 回答

TA貢獻1818條經(jīng)驗 獲得超8個贊
如果是父子級關(guān)系
假如我在父頁面定義一個變量
var value=1
子頁面可以直接通過
parent.value 獲取父頁面的這個變量
注意的是 父頁面的定義的變量必須是全局的
window不知道,但應該也可以根據(jù)這種方法套,
比如parent.$("#id")

TA貢獻1829條經(jīng)驗 獲得超7個贊
一、同源環(huán)境
1、首先在父頁面獲取iframe中的window,然后獲取元素,根據(jù)window,不僅可以獲取元素,還能調(diào)用里面的方法,前提是綁定在window上面
var ifW = $('#ifr')[0].contentWindow;
ifW.document.getElementsByClassName('wrap')
2、在iframe中獲取父頁面的window
1
window.parent
3、那么問題來了。這里有些人可能發(fā)現(xiàn),獲取元素的時候,根本獲取不到,或者有時候有,有時候沒有,很奇怪。。。其實呢,這是因為你引入iframe的時候,不能確定iframe是否加載完成,另外具體是iframe里面的js先執(zhí)行,還是父頁面的js先執(zhí)行,也是個問題。既然問題找到了,那就可以給
ifW.document.getElementsByClassName('wrap')
這句代碼加個延時,或者寫在點擊事件里面,等點擊觸發(fā)才去獲取,這個時候就沒有問題了
二、非同源
可以使用 HTML5的api , window.postMessage
在 iframe 里面,向父頁面發(fā)送消息
1
window.top.postMessage("close",'*');
在父頁面,,監(jiān)聽消息
1
2
3
4
window.addEventListener("message", function(event){
var origin = event.origin || event.originalEvent.origin;
}, false);
當然也可以在 iframe里面監(jiān)聽事件, 父頁面發(fā)送消息
添加回答
舉報