1. 程式人生 > >iframe中父與子頁面訪問許可權問題

iframe中父與子頁面訪問許可權問題

一、同域

方法呼叫
父頁面呼叫子頁面方法:FrameName.window.childMethod();
子頁面呼叫父頁面方法:parent.window.parentMethod();
DOM元素訪問
獲取到頁面的window.document物件後,即可訪問DOM元素

注意事項

要確保在iframe載入完成後再進行操作,如果iframe還未載入完成就開始呼叫裡面的方法或變數,會產生錯誤。判斷iframe是否載入完成有兩種方法:
1. iframe上用onload事件
2. 用document.readyState=="complete"來判斷

二、跨域

父頁面向子頁面傳遞資料
實現的技巧是利用location物件的hash值,通過它傳遞通訊資料。在父頁面設定iframe的src後面多加個data字串,然後在子頁面中通過某種方式能即時的獲取到這兒的data就可以了,例如:
1. 在子頁面中通過setInterval方法設定定時器,監聽location.href的變化即可獲得上面的data資訊
2. 然後子頁面根據這個data資訊進行相應的邏輯處理


子頁面向父頁面傳遞資料
實現技巧就是利用一個代理iframe,它嵌入到子頁面中,並且和父頁面必須保持是同域,然後通過它充分利用上面第一種通訊方式的實現原理就把子頁面的資料傳遞給代理iframe,然後由於代理的iframe和主頁面是同域的,所以主頁面就可以利用同域的方式獲取到這些資料。使用 window.top或者window.parent.parent獲取瀏覽器最頂層window物件的引用。