發現幾處IE與firefox的js和css幾處不同點

來源:互聯網
上載者:User
以前寫了IE下的功能,於是又寫了firefox下的功能,在firefox上花了很多時間,發現了firefox中幾處與IE中不同的地方:

1.firefox不能對innerText支援,也不知道為什麼。firefox支援innerHTML但卻不支援innerText,所以上網查了一下,原來它改支援textContent來實現innerText,不過實現得沒有那麼好,預設把多餘的空格也保留了。如果不用textContent,如果字串裡面不包含HTML代碼也可以用innerHTML代替

2.禁止選取網頁內容:
在IE中一般用js:obj.onselectstart=function(){return false;}
而firefox用CSS:-moz-user-select:none

3.濾鏡的支援(例:透明濾鏡):
IE:filter:alpha(opacity=10);
firefox:-moz-opacity:.10;

4.捕獲事件:
IE:obj.setCapture() 、obj.releaseCapture()
Firefox: document.addEventListener("mousemove",mousemovefunction,true);
    document.removeEventListener("mousemove",mousemovefunction,true);


5.擷取滑鼠位置:
IE:event.clientX、event.clientY
firefox:需要事件函數傳遞事件對象
    obj.onmousemove=function(ev){
        X= ev.pageX;Y=ev.pageY;
    }

6.DIV等元素的邊界問題:
比如:設定一個div的CSS::{width:100px;height:100px;border:#000000 1px solid;}
IE中:div的寬度(包括邊框寬度):100px,div的高度(包括邊框寬度):100px;
而firefox:div的寬度(包括邊框寬度):102px,div的高度(包括邊框寬度):102px;

所以在做這個相容IE和firefox的拖動視窗時,在js和css的寫法上要動點腦筋,給大家兩個小技巧
一.判斷瀏覽器類型:
var isIE=document.all? true:false;
我寫了一個變數,如果支援document.all文法那麼isIE=true,否則isIE=false

二.在不同瀏覽器下的CSS處理:
一般可以用!important來優先使用css語句(僅firefox支援)
比如:{border-width:0px!important;border-width:1px;}
在firefox下這個元素是沒有邊框的,在IE下邊框寬度是1px

又發現幾處XHTML與正常狀態下的JS、CSS的區別
前階段寫了相容IE/Firefox的拖動視窗發現了這兩個瀏覽器的幾處區別:發現幾處IE與firefox的js和css幾處不同點【原】
今天又寫了相容XHTML的版本,因為現在不是流行web標準嘛,偶不能落後啊!再說現在ASP.NET中的所有頁面都是應用XHTML標準的,如果在布局頁面中刪了這句標準代碼,裡面的布局和控制項visual studio就不顯示了。
呵呵,在網頁開頭加了這個代碼就是所謂的XHTML標準了<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

改了一下JS和CSS,調試了N次,發現了XHTML標準下的幾個不同點:
1.document.documentElement 與 document.body
代碼中設定頁面的CSS時一定要用:document.documentElement
比如:document.documentElement.style.overflow='hidden';
overflow-X、overflow-Y 這兩個分座標屬性XHTML是不支援的;

2.在取得網頁視窗地區和擷取捲軸位移距離時也要用document.documentElement
即這四個屬性(clientWidth、clientHeight、scrollLeft、scrollTop)一定要用document.documentElement
但是document.body.appendChild()和document.body.removeChild()卻是可以用的,而且用document.documentElement.appendChild()和document.documentElement.removeChild()代替卻會報錯;

**********所以我總結了一下僅clientWidth、clientHeight、scrollLeft、scrollTop和document.documentElement.style時才用document.documentElement

3.呵呵,加了這個標準以後IE的邊框問題也出現了變化,現在和firefox趨於一致了,是不是這個就是XHTML的優點——跨瀏覽器的標準
上篇文章提到:
設定一個div的CSS::{width:100px;height:100px;border:#000000 1px solid;}
IE中(正常情況):div的寬度(包括邊框寬度):100px,div的高度(包括邊框寬度):100px;
firefox(正常情況)::div的寬度(包括邊框寬度):102px,div的高度(包括邊框寬度):102px;

加了XHTML標準後的(IE和firefox打和了,^_^):
IE中(XHTML):div的寬度(包括邊框寬度):102px,div的高度(包括邊框寬度):102px;
firefox(XHTML)::div的寬度(包括邊框寬度):102px,div的高度(包括邊框寬度):102px;

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.