填坑之路:iframe的各種坑

連著兩個項目遇到iframe,難受碑定。

同域還好流码,不同域簡直爆炸。

當然幾經(jīng)折磨延刘,還是有了辦法漫试。

解決方案就是讓它們變同域了,那做法就是在父子兩個窗口設置一樣的 domain 碘赖。 當然這個 domain 也不是隨便設置的驾荣,至少保證二者有那么點類似,不然

常見改domain問題普泡,意思就是dev.web.nd 不是你的127.0.0.1的后綴播掷,不要瞎搞。

比如現(xiàn)在父窗口域名http://abc.dev.web.com 撼班,子窗口域名http://d.ef.dev.web.com 那現(xiàn)在我們可以發(fā)現(xiàn)二者的域名后半部分dev.web.com是一樣的叮趴,那么我們就可以在兩個頁面的入口 js 文件內(nèi)寫上 document.domain = 'dev.web.com',那么二者就同域了(本地測試考慮改host文件权烧,或者將二者設為同域如127.0.0.1不同端口).

總之眯亦,整體的思路就是取二者相同的域名部分來設domain(dev.web.com 不行就換 web.com伤溉,再不行就 com 總有一個能一樣吧!)

<iframe id="iframeId" name ="iframeName" frameborder="no" border="0" :src="resultUrl" width="100%;" height="100%;"></iframe>

那現(xiàn)在同域了以后就好辦了妻率。

1. 父窗口操作子窗口dom

JS

// 操作dom
document.getElementById("frameId").contentWindow.document.getElementById("ooxx").style.color="#F00"

// 操作方法
window.frames["iframeName"].childFun();

其中contentWindow屬性支持所有主流瀏覽器乱顾,contentDocument被IE6,7拒了。

JQ

$('#iframeId').contents().find('ooxx').css('color','#F00')

注意

在實際使用中宫静,我們可能會需要對iframe中的dom節(jié)點綁定事件走净,一直綁不上事件的原因狠狠狠有可能就是你在父窗口的 ready(onload)中壓根就沒加載到 dom(iframe子窗口內(nèi)的dom何時加載完成不能確定),所以孤里,一個比較 low 的做法是輪詢下 dom 是否加載完全:

let findObj = setInterval (function () {
    if ($("#iframeId").contents().find('ooxx').length > 0) {
        clearInterval(findObj)
        $("#iframeId").contents().on('click', 'ooxx', function() {
            dosomething()
        })
    }
}, 1000)

還有一個要知道的就是可以在 iframe 的 src 中大做文章伏伯,很多時候可以把需要的一些信息附在src中,比如src='http://abc.dev.web.com?access_token=abc&mac_key=cfd 之類的捌袜,子窗口就可以通過讀取url來操作说搅,方便得很。

2. 子窗口操作父窗口

JS

首先搞懂幾個對象:

  • parent:父窗口 ;
  • top:頂級父窗口虏等。一種情況是top==parent弄唧,這時候兩者沒差別 ;
  • self:當前窗口,即 window ;
  • opener:open 方法打開窗口的原窗口 ;
// 操作dom
parent.document.getElementById("ooxx").style.color="#F00";

// 操作方法
parent.parentFun("ooxx");

JQ

$(parent).find('ooxx').css('color','#F00')
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末霍衫,一起剝皮案震驚了整個濱河市候引,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌敦跌,老刑警劉巖澄干,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異柠傍,居然都是意外死亡麸俘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門携兵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搂誉,你說我怎么就攤上這事徐紧。” “怎么了炭懊?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵并级,是天一觀的道長。 經(jīng)常有香客問我侮腹,道長嘲碧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任父阻,我火速辦了婚禮愈涩,結果婚禮上望抽,老公的妹妹穿的比我還像新娘。我一直安慰自己履婉,他們只是感情好煤篙,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著毁腿,像睡著了一般辑奈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上已烤,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天鸠窗,我揣著相機與錄音,去河邊找鬼胯究。 笑死稍计,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的唐片。 我是一名探鬼主播丙猬,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼费韭!你這毒婦竟也來了茧球?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤星持,失蹤者是張志新(化名)和其女友劉穎抢埋,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體督暂,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡揪垄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了逻翁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饥努。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖八回,靈堂內(nèi)的尸體忽然破棺而出酷愧,到底是詐尸還是另有隱情,我是刑警寧澤缠诅,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布溶浴,位于F島的核電站,受9級特大地震影響管引,放射性物質(zhì)發(fā)生泄漏士败。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一褥伴、第九天 我趴在偏房一處隱蔽的房頂上張望谅将。 院中可真熱鬧漾狼,春花似錦、人聲如沸戏自。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擅笔。三九已至志衣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間猛们,已是汗流浹背念脯。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弯淘,地道東北人绿店。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像庐橙,于是被迫代替她去往敵國和親假勿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容