1. 滾動條:
document.documentelement.scrolltop||document.body.scrolltop
2. 網頁可視區域相容
3.獲採樣式相容window.innerheight || document.documentelement.clientheight
window.innerwidth || document.documentelement.clientwidth
4. 事件物件相容獲取非行內樣式(相容問題)
function
getstyle
(obj,attr)
else;}
;
5 阻止事件冒泡相容ie中: window.event
正常瀏覽器中: 物件.
on事件
=function
(event)
相容方式:
function
fn(eve)
6.阻止預設事件相容eve.
stoppropagation()
;
eve.cancelbubble =
true
;//相容ie`
w3c的方法是e.preventdefault(),ie則是使用e.returnvalue = false;**·
preventdefault它是事件物件(event)的乙個方法,作用是取消乙個目標元素的預設行為。既然是說預設行為,當然是元素必須有預設行為才能被取消,如果元素本身就沒有預設行為,呼叫當然就無效了。什麼元素有預設行為呢?如鏈結,提交按鈕等。當event 物件的 cancelable為false時,表示沒有預設行為,這時即使有預設行為,呼叫preventdefault也是不會起作用的。
7.事件監聽相容處理相容方式
if( e.preventdefault )
else
return
false
事件觸發階段主要由於事件流:dom0級事件處理階段和dom2級事件處理;
dom0級事件處理,是一種賦值方式,是被所有瀏覽器所支援的,簡單易懂容易操作;
元素.onclick = function(){}
dom2級事件處理是所有dom節點中的方法,可以重複繫結,但是瀏覽器相容存在問題;
非ie下:(這裡的事件名不帶on),第三個引數表示是在捕獲階段還是冒泡階段。可以重複繫結事件,執行順序按照繫結順序來執行。
ie下:odiv.
addeventlistener
('click'
,fn,
false);
odiv.
removeeventlistener
('click'
,fn ,
false
);
只有冒泡階段,所以沒有第三個引數;(這裡的事件名需要加on)
冒泡:從下往上(從裡往外)odiv.
attachevent();
odiv.
detachevent()
;
捕獲:從上往下(從外往內)
相容問題解決:
1.封裝成物件的方式
8.鍵盤事件相容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
}
9.獲取觸發的事件源var eve = eve || window.event
var keyc = eve.keycode || eve.which
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...