第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

js iframe 元素必須要等待 onload 后才能獲取其內(nèi)部的 window 對(duì)象嗎??

js iframe 元素必須要等待 onload 后才能獲取其內(nèi)部的 window 對(duì)象嗎??

www說(shuō) 2018-12-20 18:19:20
一個(gè)如下圖這樣的多標(biāo)簽功能:左邊面板是功能菜單,點(diǎn)擊后在右邊會(huì)彈出相應(yīng)的界面,都是 iframe 元素。然后我需要根據(jù) iframe 內(nèi)部 iframe.contentDocument.body 高度,實(shí)時(shí)動(dòng)態(tài)調(diào)整。目前我采取的做法是:這邊就是 onload 加載太慢觸發(fā),導(dǎo)致有一段時(shí)間 iframe 高度僅有默認(rèn)高度,然而其內(nèi)部元素實(shí)際已經(jīng)能夠清晰看到了,這樣體驗(yàn)效果非常差?。河袥](méi)有一個(gè) iframe 事件,內(nèi)嵌文檔獲取到 window 對(duì)象后立即觸發(fā)(一旦獲取到 window 對(duì)象,就可以通過(guò)定時(shí)器不斷設(shè)置 iframe.style.height = iframe.contentWindow.body.scrollHeight 實(shí)現(xiàn)類似頁(yè)頁(yè)面一點(diǎn)點(diǎn)加載的效果,不會(huì)出現(xiàn)延遲現(xiàn)象),使用 onload 事件實(shí)在太慢了!??!不能忍.
查看完整描述

1 回答

?
慕的地6264312

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊

剛才測(cè)試已經(jīng)成功解決 onload 延遲的問(wèn)題了。感謝 @邊城 提供的解決辦法?。?/p>


這邊貼出成功后的代碼(由于實(shí)際解決代碼中使用了依賴,這邊使用純 js 重寫了一遍,未經(jīng)測(cè)試,只提供各思路,給以后碰上該問(wèn)題的朋友一個(gè)解決思路哈):


HTML:


<iframe id='ifr'></iframe>

JavaScript:


var iframe = document.getElementById('ifr');


// 獲取 window 對(duì)象

var getWindow = function(ifr , callback){

    window.cancelRequestAnimationFrame(ifr._timer);

    

    if (typeof ifr.contentWindow === 'null') {

        ifr._timer = window.requestAnimationFrame(getWindow.bind(null , ifr , callback));

    } else {

        if (typeof callback === 'function') {

            callback(ifr);

        }

    }

};


getWindow(iframe , function(ifr){

    var win = ifr.contentWindow;

    

    console.log(win); // 獲取到的 window 對(duì)象

});

通過(guò)以上方式獲取 iframe 的 contentWindow 對(duì)象,比起使用 onload 事件來(lái)速度快了不知多少,基本做到了零延遲.


查看完整回答
反對(duì) 回復(fù) 2019-01-28
  • 1 回答
  • 0 關(guān)注
  • 822 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)