JS中的相容處理

2021-09-26 14:04:49 字數 2628 閱讀 9697

1. 滾動條:

document.documentelement.scrolltop||document.body.scrolltop
2. 網頁可視區域相容

window.innerheight || document.documentelement.clientheight

window.innerwidth || document.documentelement.clientwidth

3.獲採樣式相容

獲取非行內樣式(相容問題)

function

getstyle

(obj,attr)

else;}

;

4. 事件物件相容

ie中:          window.event

正常瀏覽器中: 物件.

on事件

=function

(event)

相容方式:

function

fn(eve)

5 阻止事件冒泡相容

eve.

stoppropagation()

;

eve.cancelbubble =

true

;//相容ie`

6.阻止預設事件相容

w3c的方法是e.preventdefault(),ie則是使用e.returnvalue = false;**·

preventdefault它是事件物件(event)的乙個方法,作用是取消乙個目標元素的預設行為。既然是說預設行為,當然是元素必須有預設行為才能被取消,如果元素本身就沒有預設行為,呼叫當然就無效了。什麼元素有預設行為呢?如鏈結,提交按鈕等。當event 物件的 cancelable為false時,表示沒有預設行為,這時即使有預設行為,呼叫preventdefault也是不會起作用的。

處理相容方式

if( e.preventdefault )

else

return

false

7.事件監聽相容

事件觸發階段主要由於事件流:dom0級事件處理階段和dom2級事件處理;

dom0級事件處理,是一種賦值方式,是被所有瀏覽器所支援的,簡單易懂容易操作;

元素.onclick = function(){}

dom2級事件處理是所有dom節點中的方法,可以重複繫結,但是瀏覽器相容存在問題;

非ie下:(這裡的事件名不帶on),第三個引數表示是在捕獲階段還是冒泡階段。可以重複繫結事件,執行順序按照繫結順序來執行。

odiv.

addeventlistener

('click'

,fn,

false);

odiv.

removeeventlistener

('click'

,fn ,

false

);

ie下:

只有冒泡階段,所以沒有第三個引數;(這裡的事件名需要加on)

odiv.

attachevent();

odiv.

detachevent()

;

冒泡:從下往上(從裡往外)

捕獲:從上往下(從外往內)

相容問題解決:

1.封裝成物件的方式

var eventutil=

elseif(

dom.attachevent)

else},

removehandler:

function

(dom

,eventtype,fn)

elseif(

dom.detachevent)

else}}

2.封裝成兩個函式的方式

function

addevent

(obj,inci,back)

else

if(obj.attachevent)

else

}function

removeevent

(obj,inci,back)

else

if(obj.detachevent)

else

}

8.鍵盤事件相容

var eve = eve || window.event

var keyc = eve.keycode || eve.which

9.獲取觸發的事件源

var target = e.target || e.srcelement;
以上是我自己總結的一些常遇見的js相容問題,希望可以幫助到大家。希望相容問題早些被解決。

優化js中的相容性處理

function bindevent obj,type,callback bindevent obj,type,callback else if window.addeventlistener bindevent obj,type,callback 1 惰性載入 2 首次執行時修正函式。首先,如果b...

JS相容性處理

正確情況 只有一行 只針對ie起作用,而且考慮了ie使用者自選渲染模式 怪癖模式 支援ie5 6 7 8 9及10。非ie彈出false,ie則彈出5到10版本值 script html 最短判斷是否ie的 if 1,else 經過測試 ie9 ie10彈出 非ie 實際編碼中,更多的將是採用 物件...

js事件相容處理(不同瀏覽器的事件相容處理)

var eventutil else if element.attachevent else removehandler function element,type,handler else if element.detachevent else getevent function event ge...