1,因為監(jiān)察管理頁面是iFrame形式嵌套,其內(nèi)容如下圖所示哮幢。在此頁面登錄失效時带膀,需要調(diào)用外層頁面登錄事件。(調(diào)用自己內(nèi)部iFrame的window刷新橙垢,刷新是下圖內(nèi)部區(qū)域垛叨,不會刷新外部菜單欄)
2,所以內(nèi)部iFrame接口無權(quán)限時,需要向外層發(fā)起通信嗽元,外層調(diào)用登錄事件敛纲。
(1)注意,由于此項目在釘釘內(nèi)打開剂癌,所以調(diào)用postMessage時淤翔,需要獲取iFrame的window對象。
(2)由于內(nèi)層項目的document是自己項目的html頂層佩谷,所以使用document.getElement無法獲取到外層iFrame節(jié)點旁壮。所以在內(nèi)外層同域的情況下,使用window.top獲取最外層節(jié)點谐檀。
(1)測試環(huán)境配置的內(nèi)外層項目是同域抡谐。
(2)本地環(huán)境,內(nèi)外層項目域名相同桐猬,端口不通麦撵,所以window.top依舊獲取不到。
(3)可以采用下圖溃肪,將內(nèi)外項目免胃,加載頁面初始時加上 document.domain = 'test.c3data.com.cn',內(nèi)層使用window.top便可獲取到外側(cè)iFrame元素。test.c3data.com.cn 為本地 內(nèi)外層項目的相同域名乍惊。