1、在定義 頁面元素的時(shí)候,如果該頁面元素不需要被腳本調(diào)用,那么它就不需要定義其name和id屬性;
2、如果需要定義頁面元素的name,id屬性,那么避免不同元素的name和id相同;
3、如果沒有特殊需要,盡量讓name和id相同,這主要是為了通用
4、在腳本中,獲得元素時(shí),盡量用document.getElementById("name / id") ,能不使用盡量不使用其他的
下面是收集的一些IE和Firefox的差異:
1. 對象問題
1.1 Form對象
現(xiàn)有問題:
現(xiàn)有代碼這獲得form對象通過document.forms("formName"),這樣使用在IE 能接受,MF 不能。
解決方法:
改用 作為下標(biāo)運(yùn)算。改為document.forms["formName"]
備注
上述的改用 作為下標(biāo)運(yùn)算中的formName是id而name
1.2 HTML對象
現(xiàn)有問題:
在 IE 中,HTML 對象的 ID 可以作為 document 的下屬對象變量名直接使用。在 MF 中不能。
document.all("itemName")或者document.all("itemId")
解決方法:
使用對象ID作為對象變量名
document.getElementById("itemId")
備注
document.all是IE自定義的方法,所以請大家盡量不使用。
還有一種方式,在IE和MF都可以使用
var f = document.forms["formName "];
var o = f. itemId;
1.3 DIV對象
現(xiàn)有問題:
在 IE 中,DIV對象可以使用ID作為對象變量名直接使用。在 MF 中不能。
DivId.style.display = "none"
解決方法:
document.getElementById("DivId").style.display = "none"
備注
獲得對象的方法不管是不是DIV對象,都使用getElementById方法。參見1.2
1.4 關(guān)于frame
現(xiàn)有問題
在 IE中 可以用window.testFrame取得該frame,mf中不行
解決方法
在frame的使用方面MF和IE的最主要的區(qū)別是:
如果在frame標(biāo)簽中書寫了以下屬性:
那么IE可以通過id或者name訪問這個(gè)frame對應(yīng)的window對象
而mf只可以通過name來訪問這個(gè)frame對應(yīng)的window對象
例如如果上述frame標(biāo)簽寫在最上層的window里面的htm里面,那么可以這樣訪問
IE: window.top.frameId或者window.top.frameName來訪問這個(gè)window對象
MF:只能這樣window.top.frameName來訪問這個(gè)window對象
另外,在mf和ie中都可以使用window.top.document.getElementById("frameId")來訪問frame標(biāo)簽
并且可以通過window.top.document.getElementById("testFrame").src = 'xx.htm'來切換frame的內(nèi)容
也都可以通過window.top.frameName.location = 'xx.htm'來切換frame的內(nèi)容
1.5 窗口
現(xiàn)有問題
IE中可以通過showModalDialog和showModelessDialog打開模態(tài)和非模態(tài)窗口,但是MF不支持。
解決辦法
直接使用window.open(pageURL,name,parameters)方式打開新窗口。
如果需要傳遞參數(shù),可以使用frame或者iframe。
2. 總結(jié)
2.1 在JS中定義各種對象變量名時(shí),盡量使用id,避免使用name。
在 IE 中,HTML 對象的 ID 可以作為 document 的下屬對象變量名直接使用。在 MF 中不能,所以在平常使用時(shí)請盡量使用id,避免只使用name,而不使用id。
2.2 變量名與某 HTML 對象 id 相同的問題
現(xiàn)有問題
在 MF 中,因?yàn)閷ο?id 不作為 HTML 對象的名稱,所以可以使用與 HTML 對象 id 相同的變量名,IE 中不能。
解決方法
在聲明變量時(shí),一律加上 var ,以避免歧義,這樣在 IE 中亦可正常運(yùn)行。
此外,最好不要取與 HTML 對象 id 相同的變量名,以減少錯(cuò)誤。