婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > iframe節點初始化的問題探討

iframe節點初始化的問題探討

熱門標簽:騰訊植物園地圖標注 經綸電銷機器人 外呼智能系統報價 電話機器人宣傳片 個貸電銷機器人 浦東新區百度地圖標注圖片 華為收費站地圖標注 巫山縣地圖標注app 鄒城智能外呼系統
今天忽然想著復習一下富文本編輯器的制作原理。于是二話不說將手把手地做了起來。因為一年前寫過一個簡單的富文本編輯器,所以大概還是有點印象??墒钱斘野褜懗鰜淼拇a跑一下的時候,發現了問題:

復制代碼
代碼如下:

var ifr = document.createElement('iframe');
ifr.width = 300;
ifr.height = 300;
var idoc = ifr.contentDocument || ifr.contentWindow.document;
idoc.designMode = 'on';
idoc.contentEditable = true;
idoc.write('<html><head><style>body{ margin:0px; }</style></head><body></body></html>');
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('<html><head><style>body{ margin:3px; word-wrap:break-word; word-break: break-all; }</style></head><body></body></html>');

結果運行一切順利。然后我對此次的錯誤作了分析。其實這個錯誤的原理很簡單。大家都知道iframe其實里面包含的是另一個文檔,而這個文檔只有初始化了才能擁有一個document對象。而如果沒有把iframe元素加入到DOM樹中,iframe中的文檔是不會初始化的。因此,在一開始我們的代碼里,我們獲取的ifr變量中的contentDocument值是null,也就說明了此時iframe中的文檔沒有初始化。

順著這條線,我再檢查了別的節點的初始化情況,發現其實別的元素節點只要一旦創建,無論是否加入到DOM樹中都會擁有其本身的屬性和方法。也就是說在眾多元素節點中iframe算是個異類吧。

標簽:楊凌 滁州 那曲 三沙 廣西 南平 日喀則 唐山

巨人網絡通訊聲明:本文標題《iframe節點初始化的問題探討》,本文關鍵詞  iframe,節點,初始化,的,問題,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《iframe節點初始化的問題探討》相關的同類信息!
  • 本頁收集關于iframe節點初始化的問題探討的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 延安市| 马边| 攀枝花市| 喀喇沁旗| 横山县| 烟台市| 哈密市| 宣威市| 神农架林区| 四平市| 大同市| 阿克陶县| 昆山市| 水富县| 太湖县| 上高县| 呈贡县| 太和县| 宜章县| 镇远县| 二连浩特市| 甘孜县| 华坪县| 巫溪县| 余江县| 梅河口市| 南溪县| 灵宝市| 宁都县| 扎囊县| 博兴县| 台州市| 富裕县| 雷州市| 保山市| 视频| 桐庐县| 日喀则市| 琼海市| 武威市| 兴安盟|