詳解js幾個(gè)繞不開(kāi)的事件兼容寫法
本文介紹了詳解js幾個(gè)繞不開(kāi)的事件兼容寫法,分享給大家,具體如下:
1、鍵盤事件 keyCode 兼容性寫法
var inp = document.getElementById('inp') var result = document.getElementById('result') function getKeyCode(e) { e = e ? e : (window.event ? window.event : "") return e.keyCode ? e.keyCode : e.which } inp.onkeypress = function(e) { result.innerHTML = getKeyCode(e) }
2、求窗口大小的兼容寫法
當(dāng)我們獲取滾動(dòng)條滾動(dòng)距離時(shí):
IE,Chrome: document.body.scrollTop
FF: document.documentElement.scrollTop
// 瀏覽器窗口可視區(qū)域大?。ú话üぞ邫诤蜐L動(dòng)條等邊線) // 1600 * 525 var client_w = document.documentElement.clientWidth || document.body.clientWidth; var client_h = document.documentElement.clientHeight || document.body.clientHeight; // 網(wǎng)頁(yè)內(nèi)容實(shí)際寬高(包括工具欄和滾動(dòng)條等邊線) // 1600 * 8 var scroll_w = document.documentElement.scrollWidth || document.body.scrollWidth; var scroll_h = document.documentElement.scrollHeight || document.body.scrollHeight; // 網(wǎng)頁(yè)內(nèi)容實(shí)際寬高 (不包括工具欄和滾動(dòng)條等邊線) // 1600 * 8 var offset_w = document.documentElement.offsetWidth || document.body.offsetWidth; var offset_h = document.documentElement.offsetHeight || document.body.offsetHeight; // 滾動(dòng)的高度 var scroll_Top = document.documentElement.scrollTop||document.body.scrollTop;
3、DOM 事件處理程序的兼容寫法(能力檢測(cè))
var eventshiv = { // event兼容 getEvent: function(event) { return event ? event : window.event; }, // type兼容 getType: function(event) { return event.type; }, // target兼容 getTarget: function(event) { return event.target ? event.target : event.srcelem; }, // 添加事件句柄 addHandler: function(elem, type, listener) { if (elem.addEventListener) { elem.addEventListener(type, listener, false); } else if (elem.attachEvent) { elem.attachEvent('on' + type, listener); } else { // 在這里由于.與'on'字符串不能鏈接,只能用 [] elem['on' + type] = listener; } }, // 移除事件句柄 removeHandler: function(elem, type, listener) { if (elem.removeEventListener) { elem.removeEventListener(type, listener, false); } else if (elem.detachEvent) { elem.detachEvent('on' + type, listener); } else { elem['on' + type] = null; } }, // 添加事件代理 addAgent: function (elem, type, agent, listener) { elem.addEventListener(type, function (e) { if (e.target.matches(agent)) { listener.call(e.target, e); // this 指向 e.target } }); }, // 取消默認(rèn)行為 preventDefault: function(event) { if (event.preventDefault) { event.preventDefault(); } else { event.returnValue = false; } }, // 阻止事件冒泡 stopPropagation: function(event) { if (event.stopPropagation) { event.stopPropagation(); } else { event.cancelBubble = true; } } };
4、解決 IE9 以下瀏覽器不能使用 opacity
opacity: 0.5; filter: alpha(opacity = 50); filter: progid:DXImageTransform.Microsoft.Alpha(style = 0, opacity = 50);
5、為一個(gè)元素綁定兩個(gè)相同事件:attachEvent/attachEventLister 出現(xiàn)的兼容問(wèn)題
事件綁定:(不兼容需要兩個(gè)結(jié)合做兼容if..else..)
IE8以下用: attachEvent('事件名',fn);
FF,Chrome,IE9-10用: attachEventLister('事件名',fn,false);
function myAddEvent(obj,ev,fn){ if(obj.attachEvent){ //IE8以下 obj.attachEvent('on'+ev,fn); }else{ //FF,Chrome,IE9-10 obj.attachEventLister(ev,fn,false); } }
6、獲取元素的非行間樣式值
function getStyle(object,oCss) { if (object.currentStyle) { return object.currentStyle[oCss];//IE }else{ return getComputedStyle(object,null)[oCss];//除了IE } }
7、節(jié)點(diǎn)加載
//火狐下特有的節(jié)點(diǎn)加載事件,就是節(jié)點(diǎn)加載完才執(zhí)行,和onload不同 //感覺(jué)用到的不多,直接把js代碼放在頁(yè)面結(jié)構(gòu)后面一樣能實(shí)現(xiàn)。。 document.addEventListener('DOMContentLoaded',function ( ){},false);//DOM加載完成。好像除IE6-8都可以.
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
微信小程序用戶后臺(tái)定位及錄音授權(quán)及請(qǐng)求示例
這篇文章主要為大家介紹了微信小程序用戶后臺(tái)定位及錄音授權(quán)及請(qǐng)求示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04Layui 帶多選框表格監(jiān)聽(tīng)事件以及按鈕自動(dòng)點(diǎn)擊寫法實(shí)例
今天小編就為大家分享一篇Layui 帶多選框表格監(jiān)聽(tīng)事件以及按鈕自動(dòng)點(diǎn)擊寫法實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09JS使用for in有序獲取對(duì)象數(shù)據(jù)
這篇文章主要介紹了JS使用for in有序獲取對(duì)象數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05Echarts圖表移動(dòng)端橫屏進(jìn)入退出的實(shí)現(xiàn)
本文主要介紹了Echarts圖表移動(dòng)端橫屏進(jìn)入退出的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05JS組件系列之Bootstrap Icon圖標(biāo)選擇組件
這篇文章給大家介紹js組件系列之Bootstrap Icon圖標(biāo)選擇組件,對(duì)bootstrap icon圖標(biāo)相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-01-01