JS在IE和Firefox兼容性問(wèn)題及解決方法是怎樣的,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)成立與2013年,先為富平等服務(wù)建站,富平等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為富平企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
你對(duì)JS在IE和Firefox兼容性問(wèn)題解決方法是否熟悉,這里和大家分享一下,比如現(xiàn)有代碼中存在許多document.formName.item("itemName")這樣的語(yǔ)句,不能在MF下運(yùn)行。我們可以改用document.formName.elements["elementName"]來(lái)解決。
JS在IE和Firefox兼容性問(wèn)題匯編
以下以IE代替InternetExplorer,以MF代替MozzilaFirefox
1.document.form.item問(wèn)題
(1)現(xiàn)有問(wèn)題:
現(xiàn)有代碼中存在許多document.formName.item("itemName")這樣的語(yǔ)句,不能在MF下運(yùn)行
(2)解決方法:
改用document.formName.elements["elementName"]
(3)其它
2.集合類對(duì)象問(wèn)題
(1)現(xiàn)有問(wèn)題:
現(xiàn)有代碼中許多集合類對(duì)象取用時(shí)使用(),IE能接受,MF不能。
(2)解決方法:
改用[]作為下標(biāo)運(yùn)算。如:document.forms("formName")改為document.forms["formName"]。
又如:document.getElementsByName("inputName")(1)改為document.getElementsByName("inputName")[1]
(3)其它
3.window.event
(1)現(xiàn)有問(wèn)題:
使用window.event無(wú)法在MF上運(yùn)行
(2)解決方法:
MF的event只能在事件發(fā)生的現(xiàn)場(chǎng)使用,此問(wèn)題暫無(wú)法解決。可以這樣變通:
原代碼(可在IE中運(yùn)行):
<inputtypeinputtype="button"name="someButton"value="提交" onclick="javascript:gotoSubmit()"/> ... <scriptlanguagescriptlanguage="javascript"> functiongotoSubmit(){ ... alert(window.event);//usewindow.event ... } </script>
新代碼(可在IE和MF中運(yùn)行):
<inputtypeinputtype="button"name="someButton"value="提交" onclick="javascript:gotoSubmit(event)"/> ... <scriptlanguagescriptlanguage="javascript"> functiongotoSubmit(evt){ evtevt=evt?evt:(window.event?window.event:null); ... alert(evt);//useevt ... } </script>
此外,如果新代碼中***行不改,與老代碼一樣的話(即gotoSubmit調(diào)用沒(méi)有給參數(shù)),則仍然只能在IE中運(yùn)行,但不會(huì)出錯(cuò)。所以,這種方案tpl部分仍與老代碼兼容。
4.HTML對(duì)象的id作為對(duì)象名的問(wèn)題
(1)現(xiàn)有問(wèn)題
在IE中,HTML對(duì)象的ID可以作為document的下屬對(duì)象變量名直接使用。在MF中不能。
(2)解決方法
用getElementById("idName")代替idName作為對(duì)象變量使用。
5.用idName字符串取得對(duì)象的問(wèn)題
(1)現(xiàn)有問(wèn)題
在IE中,利用eval(idName)可以取得id為idName的HTML對(duì)象,在MF中不能。
(2)解決方法
用getElementById(idName)代替eval(idName)。
6.變量名與某HTML對(duì)象id相同的問(wèn)題
(1)現(xiàn)有問(wèn)題
在MF中,因?yàn)閷?duì)象id不作為HTML對(duì)象的名稱,所以可以使用與HTML對(duì)象id相同的變量名,IE中不能。
(2)解決方法
在聲明變量時(shí),一律加上var,以避免歧義,這樣在IE中亦可正常運(yùn)行。
此外,***不要取與HTML對(duì)象id相同的變量名,以減少錯(cuò)誤。
(3)其它
7.event.x與event.y問(wèn)題
(1)現(xiàn)有問(wèn)題
在IE中,event對(duì)象有x,y屬性,MF中沒(méi)有。
(2)解決方法
在MF中,與event.x等效的是event.pageX。但event.pageXIE中沒(méi)有。
故采用event.clientX代替event.x。在IE中也有這個(gè)變量。
event.clientX與event.pageX有微妙的差別(當(dāng)整個(gè)頁(yè)面有滾動(dòng)條的時(shí)候),不過(guò)大多數(shù)時(shí)候是等效的。
如果要完全一樣,可以稍麻煩些:mX=event.x?event.x:event.pageX;然后用mX代替event.x
(3)其它
event.layerX在IE與MF中都有,具體意義有無(wú)差別尚未試驗(yàn)。
8.關(guān)于frame
(1)現(xiàn)有問(wèn)題
在IE中可以用window.testFrame取得該frame,mf中不行
(2)解決方法
在frame的使用方面mf和ie的最主要的區(qū)別是:
如果在frame標(biāo)簽中書(shū)寫了以下屬性:
<framesrcframesrc="xx.htm"id="frameId"name="frameName"/>
那么ie可以通過(guò)id或者name訪問(wèn)這個(gè)frame對(duì)應(yīng)的window對(duì)象,而mf只可以通過(guò)name來(lái)訪問(wèn)這個(gè)frame對(duì)應(yīng)的window對(duì)象。例如如果上述frame標(biāo)簽寫在最上層的window里面的htm里面,那么可以這樣訪問(wèn)
ie:window.top.frameId或者window.top.frameName來(lái)訪問(wèn)這個(gè)window對(duì)象
mf:只能這樣window.top.frameName來(lái)訪問(wèn)這個(gè)window對(duì)象
另外,在mf和ie中都可以使用window.top.document.getElementById("frameId")來(lái)訪問(wèn)frame標(biāo)簽,并且可以通過(guò)window.top.document.getElementById("testFrame").src='xx.htm'來(lái)切換frame的內(nèi)容,也都可以通過(guò)window.top.frameName.location='xx.htm'來(lái)切換frame的內(nèi)容
9.在mf中,自己定義的屬性必須getAttribute()取得
10.在mf中沒(méi)有parentElementparement.children而用
parentNodeparentNode.childNodes
childNodes的下標(biāo)的含義在IE和MF中不同,MF使用DOM規(guī)范,childNodes中會(huì)插入空白文本節(jié)點(diǎn)。
一般可以通過(guò)node.getElementsByTagName()來(lái)回避這個(gè)問(wèn)題。
當(dāng)html中節(jié)點(diǎn)缺失時(shí),IE和MF對(duì)parentNode的解釋不同,例如
<form> <table> <input/> </table> </form>
MF中input.parentNode的值為form,而IE中input.parentNode的值為空節(jié)點(diǎn)
MF中節(jié)點(diǎn)沒(méi)有removeNode方法,必須使用如下方法node.parentNode.removeChild(node)
11.const問(wèn)題
(1)現(xiàn)有問(wèn)題:
在IE中不能使用const關(guān)鍵字。如constconstVar=32;在IE中這是語(yǔ)法錯(cuò)誤。
(2)解決方法:
不使用const,以var代替。
12.body對(duì)象
MF的body在body標(biāo)簽沒(méi)有被瀏覽器完全讀入之前就存在,而IE則必須在body完全被讀入之后才存在
13.urlencoding
在js中如果書(shū)寫url就直接寫&不要寫&例如varurl='xx.jsp?objectName=xx&objectEvent=xxx';
frm.action=url那么很有可能url不會(huì)被正常顯示以至于參數(shù)沒(méi)有正確的傳到服務(wù)器
一般會(huì)服務(wù)器報(bào)錯(cuò)參數(shù)沒(méi)有找到
當(dāng)然如果是在tpl中例外,因?yàn)閠pl中符合x(chóng)ml規(guī)范,要求&書(shū)寫為&
一般MF無(wú)法識(shí)別js中的&
14.nodeName和tagName問(wèn)題
(1)現(xiàn)有問(wèn)題:
在MF中,所有節(jié)點(diǎn)均有nodeName值,但textNode沒(méi)有tagName值。在IE中,nodeName的使用好象有問(wèn)題。
(2)解決方法:
使用tagName,但應(yīng)檢測(cè)其是否為空。
15.元素屬性
IE下input.type屬性為只讀,但是MF下可以修改
16.document.getElementsByName()和document.all[name]的問(wèn)題
(1)現(xiàn)有問(wèn)題:
在IE中,getElementsByName()、document.all[name]均不能用來(lái)取得div元素(是否還有其它不能取的元素還不知道)。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。
本文標(biāo)題:JS在IE和Firefox兼容性問(wèn)題及解決方法是怎樣的
URL鏈接:http://chinadenli.net/article32/piggsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站改版、靜態(tài)網(wǎng)站、面包屑導(dǎo)航、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)