[英]When does a web browser request the src content of a dynamically created iframe?
假設我使用js動態創建iframe節點,然后設置src屬性(1),最后將該節點附加到DOM(2)。
瀏覽器何時請求src內容? 在(1)之后? 在(2)之后? 還是不可預測的? 是否取決於瀏覽器?
將
iframe
元素首次插入文檔時 ,用戶代理必須創建嵌套的瀏覽上下文 ,然后首次處理iframe
屬性 。
var f = document.createElement('iframe'); f.src = '/?';
永遠不會獲取資源(我只顯示了最低和最高測試的瀏覽器版本):
因此,僅在將框架添加到文檔后才發送請求。
之后(2)。 在此之前只是JS。 在將瀏覽器附加到DOM之前,它不會對其起作用。
好吧,我不會為您測試每個瀏覽器,但我總是希望帶有src和href屬性的元素鏈接到或加載某種內容,並在它們被實際附加后始終加載,因為iframe或js文件因大量安全性和一般實現問題而落入文檔中。 瀏覽器供應商以其他任何方式做到這一點將是嚴重的失敗,我可以發現chrome經過一點試驗就可以做到這一點。
我能想到的唯一例外是可以在插入之前加載的圖像。
以我的經驗,總是將節點添加到DOM中。 您可以加載Firebug或其他開發控制台,並查看何時發生。 拋出幾個警報,以確保像這樣的時間:
<script type="text/javascript">
ifrm = document.createElement("IFRAME");
ifrm.setAttribute("src", "http://blah.com/");
alert('SRC SET');
ifrm.style.width = 640+"px";
ifrm.style.height = 480+"px";
document.body.appendChild(ifrm);
alert('ADDED TO DOM');
</script>
運行類似的內容,並在Firebug中查看“ Net”選項卡,以查看何時請求該頁面。 我相信只有在調用appendChild之后才會請求它。
之后(2)!! 看看這個: http : //jsfiddle.net/lbstr/td7DD/
打開firebug或chrome的控制台,然后查看net選項卡。 您會看到Google正在加載。 然后,注釋掉第三行並再次運行。 您不會看到Google正在加載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.