(1)現有問題
在IE中可以用window.testFrame取得該frame,mf中不行
(2)解決方法
在frame的使用方面mf和IE的最主要的區別是:
如果在frame標簽中書寫了以下屬性:
那麼ie可以通過id或者name訪問這個frame對應的window對象,而mf只可以通過name來訪問這個frame對應的window對象,例如如果上述frame標簽寫在最上層的window裡面的htm裡面,那麼可以這樣訪問IE:window.top.frameId或者window.top.frameName來訪問這個window對象
mf:只能這樣window.top.frameName來訪問這個window對象
另外,在mf和IE中都可以使用window.top.document.getElementById("frameId")來訪問frame標簽
並且可以通過window.top.document.getElementById("testFrame").src='xx.htm'來切換frame的內容
也都可以通過window.top.frameName.location='xx.htm'來切換frame的內容
關於frame和window的描述可以參見bbs的‘window與frame’文章
以及/test/Javascript/test_frame/目錄下面的測試
----adun2004.12.09修改
9.在mf中,自己定義的屬性必須getAttribute()取得
10.在mf中沒有parentElementparement.children而用parentNodeparentNode.childNodes
childNodes的下標的含義在IE和MF中不同,MF使用DOM規范,childNodes中會插入空白文本節點。
一般可以通過node.getElementsByTagName()來回避這個問題。
當Html中節點缺失時,IE和MF對parentNode的解釋不同,例如
- <form>
- <table>
- <input/>
- < span>table>
- < span>form>
MF中input.parentNode的值為form,而IE中input.parentNode的值為空節點
MF中節點沒有removeNode方法,必須使用如下方法node.parentNode.removeChild(node)。