首頁 web前端 html教學 iframe節點初始化的問題探討_HTML/Xhtml_網頁製作

iframe節點初始化的問題探討_HTML/Xhtml_網頁製作

May 16, 2016 pm 04:38 PM
iframe 初始化 節點

今天忽然想著複習一下富文本編輯器的製作原理。於是二話不說將手把手地做了起來。因為一年前寫過一個簡單的富文本編輯器,所以大概還是有點印象。可是當我把寫出來的程式碼跑一下的時候,發現了問題:

複製程式碼
程式碼如下:

var ifr = document.createElement('iframe');
ifr.width = 300;
ifr.height = 300;
var idoc = i🎜>ifr.height = 300;
var idoc = i🎜>ifr.height = 300;
var idoc = ifr.contentDocudoc> i .contentWindow.document;
idoc.designMode = 'on';
idoc.contentEditable = true;
idoc.write('');
document.body.appendChild(ifr);


大家看看上面的程式碼,有沒有發現哪裡出現了批漏?

我想如果沒有和我有類似經歷的童鞋估計是看不出這段程式碼有什麼問題的。那麼大家不妨去跑一下,也許你很快就會發現問題。

下面由我來揭曉答案:

這段程式碼會拋找不到物件的異常。找不到哪個物件?找不到document對象,啥?怎麼可能找不到document物件?當然,這個document物件是iframe的document物件。做過富文本的都知道要先取得了iframe的document物件才可以設定為可編輯。但是為什麼我們取得不了document物件呢?這裡我就不賣關子了。我說說我的解決流程吧。

首先我去谷歌了一下發現我獲取document的寫法是沒有錯的。然後我在想難道是Chrome的原因?難道Chrome抽風不支持這兩個對象?於是換到了Firefox。結果還是一樣。那麼可以肯定的是,肯定是自己的程式碼問題。

後來透過對比網路上的程式碼,發現自己的appendChild位置有點不對,於是乎就將它提前到了獲取document對象前:
複製程式碼
程式碼如下:


var ifr = document.createElement('iframe');
ifr.width = 300.
;
ifr. height = 300;
document.body.appendChild(ifr);
var idoc = ifr.contentDocument || ifr.contentWindow.document;
idoc.designMode = 'on';
idoc.contentEditable = true;
idoc.write('');

結果運行一切順利。然後我對這一次的錯誤作了分析。其實這個錯誤的原理很簡單。大家都知道iframe其實裡麵包含的是另一個文檔,而這個文檔只有初始化了才能擁有一個document物件。而如果沒有把iframe元素加入DOM樹中,iframe中的文件是不會初始化的。因此,在一開始我們的程式碼裡,我們取得的ifr變數中的contentDocument值是null,也就說明了此時iframe中的文件沒有初始化。 順著這條線,我再檢查了別的節點的初始化情況,發現其實別的元素節點只要一旦創建,無論是否加入到DOM樹中都會擁有其本身的屬性和方法。也就是說在眾多元素節點中iframe算是個異類吧。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

我該如何裁剪HTML中的IFrame? 我該如何裁剪HTML中的IFrame? Aug 29, 2023 pm 04:33 PM

內嵌框架在HTML中稱為iframe。標籤指定內容中的一個矩形區域,瀏覽器可以在其中顯示帶有捲軸和邊框的不同文件。若要在目前HTML文檔中嵌入另一個文檔,請使用內嵌框架。可以使用HTMLiframe名稱屬性指定元素的參考。在JavaScript中,對元素的參考也是使用name屬性進行的。 iframe本質上用於在目前顯示的網頁中顯示網頁。包含iframe的文件的URL使用「src」屬性指定。語法以下是HTML的語法<iframesrc="URL"title="d

iframe為什麼加載慢 iframe為什麼加載慢 Aug 24, 2023 pm 05:51 PM

iframe載入慢的原因主要包括網路延遲、資源載入時間長、載入順序、快取機制以及安全性策略等。詳細介紹:1、網路延遲,當瀏覽器載入一個包含iframe的網頁時,需要發送請求到伺服器取得iframe中的內容,若網路延遲較高,那麼取得內容的時間就會增加,從而導致iframe載入慢;2.資源載入時間長,資源的大小較大或伺服器回應時間較長時,載入速度會更明顯變慢;3、載入順序等等。

動態連結函式庫初始化例程失敗什麼辦 動態連結函式庫初始化例程失敗什麼辦 Dec 29, 2023 am 10:30 AM

解決方法:1、重新安裝應用程式;2、修復或重新安裝DLL;3、系統還原或檢查點恢復;4、使用系統檔案檢查器(SFC)掃描;5、檢查啟動項目和服務;6、使用工具;7、查閱官方文件或論壇;8、考慮安全軟體;9、檢視事件檢視器;10、尋求專家協助等等。

iframe中的data-id是什麼意思 iframe中的data-id是什麼意思 Aug 28, 2023 pm 02:25 PM

iframe中的data-id是指在HTML標籤中使用的自訂屬性,用於儲存特定元素的識別碼。透過使用data-id屬性,可以為iframe元素新增一個唯一的標識符,以便在JavaScript中對其進行操作和存取。 data-id屬性的命名可以根據特定的需求進行自定義,但通常會遵循一些命名規範,以確保其唯一性和易讀性。 data-id屬性也可以用來識別和操作特定的iframe。

win7怎麼初始化電腦 win7怎麼初始化電腦 Jan 07, 2024 am 11:53 AM

win7系統是一款非常優秀的高效能係統,在對win7的不斷使用中有很多的朋友都在問win7怎麼初始化電腦!今天小編為大家帶來的就是win7電腦恢復出廠設定的操作方法。 win7怎麼初始化電腦的相關資訊:圖文詳解操作步驟:1、開啟“開始功能表”,然後進入。 2、點選進入左側底部的設定。 3、在Win10更新和恢復設定的介面中,選擇。 4、點選「刪除所有內容並重新安裝Windows」下方的。 5.可以看到如下「初始化」設定了,然後點選。 6、進入「你的電腦有多個驅動器」設定選項,這裡有和兩個選項,可以根據情況選擇

iframe有哪些載入事件 iframe有哪些載入事件 Aug 28, 2023 pm 01:55 PM

iframe的載入事件有onload事件、onreadystatechange事件、onbeforeunload事件、onerror事件、onabort事件等。詳細說明:1、onload事件,指定載入iframe完成後要執行的JavaScript程式碼;2、onreadystatechange事件,指定當iframe狀態變更時要執行的JavaScript程式碼等等。

修復無法初始化PC上的圖形系統錯誤 修復無法初始化PC上的圖形系統錯誤 Mar 08, 2024 am 09:55 AM

許多遊戲玩家遇到了遊戲無法初始化圖形系統的令人沮喪的問題。這篇文章將深入探討這個問題背後的常見原因,並找到簡單而有效的解決方案,讓你重新回到棋盤上,並在任何時間內通過關卡。因此,如果你在過山車大亨、刺客信條、托尼霍克的職業溜冰者等中收到無法初始化圖形系統錯誤訊息,請遵循本文中提到的解決方案。初始化錯誤無法初始化圖形系統。不支援顯示卡。修復無法初始化圖形系統錯誤訊息要解決過山車大亨、刺客信條、托尼霍克的專業溜冰者等遊戲中的無法初始化圖形系統錯誤,可以嘗試執行以下解決方法:更新顯示卡驅動程式在兼容模

如何重置win7網路設置 如何重置win7網路設置 Dec 26, 2023 pm 06:51 PM

win7系統是一款非常優秀的高效能係統,最近一段時間裡有很多win7系統的小夥伴們都在找win7怎麼初始化網路設定的方法,今天小編為大家帶來的就是win7電腦網路初始化的詳細教程一起來看看吧。 win7怎麼初始化網路設定的詳細教學:圖文操作步驟:1、點“開始”選單,找到並開啟“控制台”,進去之後再點“網路和共用中心”。 2、然後找到並點選「更改適配器設備」。 3.接下來,在打開的視窗中,滑鼠右鍵點擊“本地連接”,再點“屬性”。 4.開啟之後,就找到“Internet協定版本(TCP/IPv4)”,再雙

See all articles