JavaScript事件處理兼容性總結
事件監聽綁定函數
// eventType為不含"on"的事件類型
var bind = function(ele, eventType, callback) {
if(ele.addEventListener) {
// W3C標準寫法
return ele.addEventListener(eventType, callback, false);
}else if(ele.attachEvent) {
// 兼容IE6~8
return ele.attachEvent(eventType, callback);
}else {
// 兼容IE5-
return ele["on" + eventType] = callback;
}
}
事件監聽解綁函數
// eventType為不含"on"的事件類型
var unbind = function(ele, eventType, callback) {
if(ele.removeEventListener) {
// W3C標準寫法
return ele.removeEventListener(eventType, callback, false);
}else if(ele.detachEvent) {
// 兼容IE6~8
return ele.detachEvent(eventType, callback);
}else {
// 兼容IE5-
return ele["on" + eventType] = null;
}
}
重寫window.onload為可多次追加的函數
var addLoadEvent = function(callback) {
var oldOnLoad = window.onload;
if(type window.onload != "function") {
window.onload = callback;
}else {
window.onload = function() {
if(oldOnLoad) {
oldOnLoad();
}
callback();
}
}
}
獲取鼠標點擊事件的坐標位置
screenX: 鼠標位置相對于用戶屏幕水平偏移量,參照點也就是原點是屏幕的左上角;
PageX:鼠標在頁面上的位置,從頁面左上角開始,即是以頁面為參考點,不隨滑動條移動而變化;
clientX:鼠標在頁面上可視區域的位置,從瀏覽器可視區域左上角開始,即是以瀏覽器滑動條此刻的滑動到的位置為參考點,隨滑動條移動 而變化.
常見的JavaScript獲取元素位置的API:
function getPosition(e) {
// 訪問事件對象
var e = e || window.event;
// 聲明x、y分別為鼠標相對于文檔的位置
var x = 0, y = 0;
// 針對W3C標準瀏覽器具有pageX/Y屬性
if(e.pageX) {
x = e.pageX;
y = e.pageY;
}else if(e.clientX) {
// 在IE6~8中不支持pageX,而是用clientX;但clientX只是相對屏幕視口的橫坐標,不包含滾動寬度;
var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
// pageX = clientX + scrollX
x = e.clientX + scrollLeft;
y = e.clientY + scrollTop;
}
return [x, y];
}
</code></pre>
取消默認事件發生
function cancelEvent(event) {
if(event.preventDefault) {
e.preventDefault();
}else {
// 兼容IE6~8
event.returnValue = false;
}
}
防止事件在嵌套元素中傳播
有一個元素嵌套在另一個元素中,他們都捕獲點擊事件。如果想阻止事件傳播,可以使用stopPropagation()函數,在IE6~8中則可以使用cancelBubble = boolean來實現。
function stopPropagation(event) {
if(event.stopPropagation) {
event.stopPropagation();
}else {
event.cancelBubble = true;
}
}
獲取鍵盤事件
function keyCode(e) {
// 訪問事件對象
var e = e || window.event;
var key = e.keyCode || e.charCode;
return key;
}
來自:http://www.dengzhr.com/js/366
本文由用戶 吳青強 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!