js在IE和FF下的不同

2021-05-22 00:17:28 字數 4965 閱讀 1392

1.document.formname.item("itemname") 問題

說明:ie下,可以使用document.formname.item("itemname")或document.formname.elements["elementname"];firefox下,只能使用document.formname.elements["elementname"].

解決方法:統一使用document.formname.elements["elementname"].

2.集合類物件問題

說明:ie下,可以使用()或獲取集合類物件;firefox下,只能使用獲取集合類物件.

解決方法:統一使用獲取集合類物件.

3.自定義屬性問題

說明:ie下,可以使用獲取常規屬性的方法來獲取自定義屬性,也可以使用getattribute()獲取自定義屬性;firefox下,只能使用getattribute()獲取自定義屬性.

解決方法:統一通過getattribute()獲取自定義屬性.

4.eval("idname")問題

說明:ie下,,可以使用eval("idname")或getelementbyid("idname")來取得id為idname的html物件;firefox下只能使用getelementbyid("idname")來取得id為idname的html物件.

解決方法:統一用getelementbyid("idname")來取得id為idname的html物件.

5.變數名與某html物件id相同的問題

說明:ie下,html物件的id可以作為document的下屬物件變數名直接使用;firefox下則不能.firefox下,可以使用與html物件id相同的變數名;ie下則不能。

解決方法:使用document.getelementbyid("idname")代替document.idname.最好不要取html物件id相同的變數名,以減少錯誤;在宣告變數時,一律加上var,以避免歧義.

7.input.type屬性問題

說明:ie下input.type屬性為唯讀;但是firefox下input.type屬性為讀寫.

9.event.x與event.y問題

說明:ie下,even物件有x,y屬性,但是沒有pagex,pagey屬性;firefox下,even物件有pagex,pagey屬性,但是沒有x,y屬性.

解決方法:使用mx(mx = event.x ? event.x : event.pagex;)來代替ie下的event.x或者firefox下的event.pagex.

10.event.srcelement問題

說明:ie下,event物件有srcelement屬性,但是沒有target屬性;firefox下,event物件有target屬性,但是沒有srcelement屬性.

解決方法:使用obj(obj = event.srcelement ? event.srcelement : event.target;)來代替ie下的event.srcelement或者firefox下的event.target.

13.frame問題

以下面的frame為例:

(1)訪問frame物件:

ie:使用window.frameid或者window.framename來訪問這個frame物件.

firefox:只能使用window.framename來訪問這個frame物件.

另外,在ie和firefox中都可以使用window.document.getelementbyid("frameid")來訪問這個frame物件.

(2)切換frame內容:

在ie和firefox中都可以使用window.document.getelementbyid("testframe").src = "***.html"或window.framename.location = "***.html"來切換frame的內容.

如果需要將frame中的引數傳回父視窗,可以在frme中使用parent來訪問父視窗。例如:parent.document.form1.filename.value="aqing";

14.body問題

firefox的body在body標籤沒有被瀏覽器完全讀入之前就存在;而ie的body則必須在body標籤被瀏覽器完全讀入之後才存在.

例如:

firefox:

ie&firefox:

15. 事件委託方法

ie:document.body.onload = inject; //function inject()在這之前已被實現

firefox:document.body.onload = inject();

有人說標準是:

document.body.οnlοad=new function('inject()');

16. firefox與ie(parentelement)的父元素的區別

ie:obj.parentelement

firefox:obj.parentnode

解決方法: 因為firefox與ie都支援dom,因此使用obj.parentnode是不錯選擇.

document.getelementbyid('element').innertext = "my text";

} else

終於完成了偶的拖動視窗,花了近15個小時,慶祝一下(*^__^*);以前寫了ie下的功能,於是又寫了firefox下的功能,在firefox上花了很多時間,發現了firefox中幾處與ie中不同的地方:

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

2.禁止選取網頁內容:

在ie中一般用js:obj.onselectstart=function()

而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.οnmοusemοve=function(ev)

6.div等元素的邊界問題:

比如:設定乙個div的css::

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支援)

比如:在firefox下這個元素是沒有邊框的,在ie下邊框寬度是1px

又發現幾處xhtml與正常狀態下的js、css的區別

前階段寫了相容ie/firefox的拖動視窗發現了這兩個瀏覽器的幾處區別:發現幾處ie與firefox的js和css幾處不同點【原】

今天又寫了相容xhtml的版本,因為現在不是流行web標準嘛,偶不能落後啊!再說現在asp.net中的所有頁面都是應用xhtml標準的,如果在布局頁面中刪了這句標準**,裡面的布局和控制項visual studio就不顯示了。

呵呵,在網頁開頭加了這個**就是所謂的xhtml標準了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是不支援的;

**********所以我總結了一下僅clientwidth、clientheight、scrollleft、scrolltop和document.documentelement.style時才用document.documentelement

3.呵呵,加了這個標準以後ie的邊框問題也出現了變化,現在和firefox趨於一致了,是不是這個就是xhtml的優點——跨瀏覽器的標準

上篇文章提到:

設定乙個div的css::

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;

IE和FF下JS和CSS的幾處不同

1.ajax下使用的物件不同 2.xmlhttprequestobject 物件的一些屬性不同 ie支援 xmlhttprequestobject.readystate 和 xmlhttprequestobject.readystate ff只支援 xmlhttprequestobject.read...

js在IE和ff之間的差異(相容)

1.在建立xmlhttprequest物件時存在相容 2.事件物件event的建立和屬性存在差異 ie中,event事件作為window物件的乙個屬性 而ff則作為引數傳遞給函式。同時ie阻止冒泡 阻止預設行為 事件源物件分別為 e.cancelbubble true returnvalue fal...

學習div float 在ff和ie下的布局區別

以上 顯示的結果如下,很正常,結果相同。下面會在這個基礎上進行修改,修改的內容都在style中,其他 就不再重複寫了。請注意,這裡的style中用到了min height,這個和height是不同的,min height指定了物件的乙個最小高度,當物件的子內容高度超過這個最小高度是,這個物件會自動撐...