Loading...

          java .net

          IE與FireFox的兼容性問(wèn)題及解決(轉(zhuǎn))

          偷來(lái)的知識(shí) 嘿嘿

          document.getElementById("apple") 以ID來(lái)訪問(wèn)對(duì)象,且一個(gè)ID在頁(yè)面中必須是唯一的
          document.getElementsByTagName("div")[0] 以標(biāo)簽名來(lái)訪問(wèn)對(duì)象

          1.setAttribute(string name, string value):增加一個(gè)指定名稱和值的新屬性,或者把一個(gè)現(xiàn)有的屬性設(shè)定為指定的值。

          設(shè)置對(duì)象的屬性則應(yīng)該采用:
          document.getElementById("apple").setAttribute("width","100")
          document.getElementsByTagName("div")[0].setAttribute("width","100")
          訪問(wèn)對(duì)象的屬性則采用:
          document.getElementById("apple").getAttribute("width")
          document.getElementsByTagName("div")[0].getAttribute("width")

          我們經(jīng)常需要在JavaScript中給Element動(dòng)態(tài)添加各種屬性,這可以通過(guò)使用setAttribute()來(lái)實(shí)現(xiàn),這就涉及到了瀏覽器的兼容性問(wèn)題。
          var bar = document.getElementById("foo");
          bar.setAttribute("onclick", "javascript:alert('This is a test!');");
          這里利用setAttribute指定e的onclick屬性,簡(jiǎn)單,很好理解。但是IE不支持,IE并不是不支持setAttribute這個(gè)函數(shù),
          而是不支持用setAttribute設(shè)置某些屬性,例如對(duì)象屬性、集合屬性、事件屬性,也就是說(shuō)用setAttribute設(shè)置style和onclick這些屬性
          在IE中是行不通的。為達(dá)到兼容各種瀏覽器的效果,可以用點(diǎn)符號(hào)法來(lái)設(shè)置Element的對(duì)象屬性、集合屬性和事件屬性。
          document.getElementById("foo").className = "fruit";
          document.getElementById("foo").style.cssText = "color: #00f;";
          document.getElementById("foo").style.color = "#00f";
          document.getElementById("foo").onclick= function () { alert("This is a test!"); }


          2、關(guān)于class和className
          class屬性在W3C DOM中扮演著很重要的角色,但由于瀏覽器差異性仍然存在。使用setAttribute("class", vName)語(yǔ)句動(dòng)態(tài)設(shè)置
          Element的class屬性在firefox中是行的通的,在IE中卻不行。因?yàn)槭褂肐E內(nèi)核的瀏覽器不認(rèn)識(shí)"class",要改用"className";
          同樣,firefox 也不認(rèn)識(shí)"className"。所以常用的方法是二者兼?zhèn)洌?br>      element.setAttribute("class", vName);
               element.setAttribute("className", vName);    //for IE

          關(guān)于IE下TABLE無(wú)法插入新行的問(wèn)題
          IE下TABLE無(wú)論是用innerHTML還是appendChild插入<tr>都沒(méi)有效果,而其他瀏覽器卻顯示正常。解決他的方法是,將<tr>加到TABLE的<tbody>元素中,如下面所示:

          var row = document.createElement("tr");
          var cell = document.createElement("td");
          var cell_text = document.createTextNode("香蕉不吃蘋果");
          cell.appendChild(cell_text);
          row.appendChild(cell);
          document.getElementsByTagName("tbody")[0].appendChild(row);


          window.event

          IE:有window.event對(duì)象
          FF:沒(méi)有window.event對(duì)象。可以通過(guò)給函數(shù)的參數(shù)傳遞event對(duì)象。如onmousemove=doMouseMove(event)

          鼠標(biāo)當(dāng)前坐標(biāo)
          IE:event.x和event.y。
          FF:event.pageX和event.pageY。
          通用:兩者都有event.clientX和event.clientY屬性。

          鼠標(biāo)當(dāng)前坐標(biāo)(加上滾動(dòng)條滾過(guò)的距離)
          IE:event.offsetX和event.offsetY。
          FF:event.layerX和event.layerY。

          標(biāo)簽的x和y的坐標(biāo)位置:style.posLeft 和 style.posTop
          IE:有。
          FF:沒(méi)有。
          通用:object.offsetLeft 和 object.offsetTop。

          窗體的高度和寬度
          IE:document.body.offsetWidth和document.body.offsetHeight。注意:此時(shí)頁(yè)面一定要有body標(biāo)簽。
          FF:window.innerWidth和window.innerHegiht,以及document.documentElement.clientWidth和document.documentElement.clientHeight。
          通用:document.body.clientWidth和document.body.clientHeight。

          添加事件
          IE:element.attachEvent("onclick", func);。
          FF:element.addEventListener("click", func, true)。
          通用:element.onclick=func。雖然都可以使用onclick事件,但是onclick和上面兩種方法的效果是不一樣的, onclick只有執(zhí)行一個(gè)過(guò)程,而attachEvent和addEventListener執(zhí)行的是一個(gè)過(guò)程列表,也就是多個(gè)過(guò)程。例如: element.attachEvent("onclick", func1);element.attachEvent("onclick", func2)這樣func1和func2都會(huì)被執(zhí)行。

          標(biāo)簽的自定義屬性
          IE:如果給標(biāo)簽div1定義了一個(gè)屬性value,可以div1.value和div1["value"]取得該值。
          FF:不能用div1.value和div1["value"]取。
          通用:div1.getAttribute("value")。

          父節(jié)點(diǎn)、子節(jié)點(diǎn)和刪除節(jié)點(diǎn)
          IE:parentElement、parement.children,element.romoveNode(true)。
          FF:parentNode、parentNode.childNodes,node.parentNode.removeChild(node)。

          CSS:透明
          IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。
          FF:opacity:0.6。

          設(shè)置CSS 的STYLE
          document.getElementById('look').style.cssText="display:none;";//通用
          document.getElementById('look').setAttribute("style","display:none;");//firefox

          posted on 2008-08-26 22:06 閱讀(378) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          公告

          希望有一天

          我能用鼠標(biāo)雙擊我的錢包

          然后選中一張100元

          按住“ctrl+c”

          接著不停的“ctrl+v”

          嘻嘻~~~笑醒~~~



          導(dǎo)航

          <2008年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          統(tǒng)計(jì)

          常用鏈接

          留言簿(6)

          隨筆分類(102)

          隨筆檔案(398)

          文章分類

          文章檔案(10)

          有趣網(wǎng)絡(luò)

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 屏南县| 墨玉县| 威信县| 嘉祥县| 井陉县| 辽阳市| 德保县| 囊谦县| 南川市| 沾化县| 驻马店市| 庆安县| 扬州市| 定州市| 河北区| 加查县| 红安县| 河间市| 修文县| 乌拉特后旗| 奉化市| 和田市| 东阳市| 广安市| 永济市| 信阳市| 广西| 松江区| 嘉峪关市| 镶黄旗| 阜城县| 右玉县| 东城区| 富锦市| 平顶山市| 水城县| 广南县| 治多县| 金塔县| 定日县| 光山县|