2007年8月29日 星期三

當我的兒子是 iFrame 的時候

當我的網頁裡頭有使用到 iFrame,而我又想要去改變或取得這iFrame的東西時,該怎麼辦?

目前有兩種方式,但使用的時機各不相同。
第一種:document.getElementById(“ifr”);
第二種:window.frames[“ifr”];

如果我們想要改變的,只是iframe的src,border,scrolling時,就要使用第一種方式。

如果我們想要改變的,是整個iframe裡的DOM階層,也就是要存取iframe裡的某一樣東西時(如txtbox的值),就要使用第二種。

然而,當你所存取的 iframe 頁面尚未完全下載完成時就要呼叫使用它,是會出錯的。所以,我們自己要去處理這個錯誤。最簡單的方法,就是先去檢查我們要呼叫的物件是否已經存在,如果不存在,就等他一下,然後再繼續做我們要做的事。

我用了 setTimeout( ) 的方式來處理。


function CallIFrame()
{
 var ob=window.frames["ifDraft"];
 var iobject=ob.document.getElementById("txtTest");
 if(iobject)
 {
  iobject.value="三趨一";
 }
 else
 {
  setTimeout("CallIFrame()",100);
 }

}

沒有留言:

張貼留言