MozTW 討論區
https://forum.moztw.org/

有關IFRAME載入後無法從caller取得innerHTML屬性問題
https://forum.moztw.org/viewtopic.php?f=13&t=2646
1 頁 (共 1 頁)

發表人:  kanashimi [ 2004-06-26, 20:41 ]
文章主題 :  有關IFRAME載入後無法從caller取得innerHTML屬性問題

不知道有沒有人注意到,IFRAME在載入後,若IFRAME的URL已被cache,雖然載入會很快完成,但在呼叫的頁面,假如透過先前設定得物件,卻無法獲得其innerHTML屬性。

我是在load前設定
referenceDoc=document.getElementById(iframe_id).contentWindow.document
load後再透過
referenceDoc.body.innerHTML
來取得這個值,但行不通。

也許是因為我呼叫的方式不對,所以不能算是Gecko engine的bug;不過我在IE6sp1確認過可以well work。

暫時的解決辦法有兩個,一是reload,不過這是個ugly的方法。二是每次要呼叫前重設物件,但這也怪怪的。
較詳細的實例在 http://lyrics.meicho.com.tw/game/game.pl?seg=memoff ,不嫌棄的話可以看看(原始碼很亂就是了 ^_^;;)

癥結在 http://lyrics.meicho.com.tw/game/game.js 的 function loadReference():下面是重設物件的解決辦法
referenceDoc=getDocObj('reference').contentWindow.document; // 不能省略這項設定(IE可):bug?

抱歉,因為是直接給人看的,所以沒有test與比較的page。不過上面那行註解起來後,用Gecko engine確實就看不到了。
假如是觀念方面,我是這樣想的:既然先前已經設定過了referenceDoc為一個reference,那照理來說應該就沒有必要再使用前還需要重設其值才對。

若是有人能回答,就太感謝了。若是不成…
英文不好,假如有人可以幫我問問那邊的NEWS,就拜託了(一拜)

發表人:  kanashimi [ 2004-06-29, 12:54 ]
文章主題 :  自解

意外的得到了回覆:Martin Honnen wrote: If you load a new document then certainly the browser has to create a new document object.

看起來是觀念上的不同,不過還不是不能理解就是。

發表人:  訪客 [ 2004-06-29, 19:41 ]
文章主題 : 

雖然你說得頗詳盡, 但能做個minimized的testcase嗎?
否則很難找人幫你測試.

發表人:  kanashimi [ 2004-06-29, 22:45 ]
文章主題 : 

Anonymous 寫:
能做個minimized的testcase嗎?
否則很難找人幫你測試.

感謝這位先進願意解決這個問題。

However,這個問題已經解決。列上解決後的部份程式碼:
load contentWindow後:
代碼:
 if(typeof referenceDoc=='object'){   //   referenceDoc is still contentWindow here
  referenceDoc=referenceDoc.document;
  o=referenceDoc.body;//alert(o.innerHTML.length+'\n'+o.innerHTML);

..
load contentWindow前:這段會先執行
代碼:
 if(typeof o.contentWindow.document=='object'){   //   應該不能用o.contentWindow吧?怕o.contentWindow就算沒能載入文件,]會被定義
  //   Martin Honnen wrote: If you load a new document then certainly the browser has to create a new document object.
  referenceDoc=o.contentWindow;//.document;   o.contentWindow.document still index to blank window here


這段程式碼已在 IE & Gecko 測試通過。

--
順便一提,最近用firefox總覺得複製的功能怪怪的,不時「失手」..

發表人:  kanashimi [ 2005-11-28, 08:10 ]
文章主題 : 

這功能用Ajax重寫可能會比較好…

1 頁 (共 1 頁) 所有顯示的時間為 UTC + 8 小時
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/