實現比較通用的DOM事件掛載、事件解除安裝(相容)
/**
* DOM 事件掛載
* el DOM元素
* eventName 事件名
* listener 監聽函式
* capture 是否是捕獲階段
*/
function install(el, eventName, listener, capture) {
if (el.addEventListener) {
el.addEventListener(eventName, listener, capture);
}else {
el.attachEvent('on' + eventName, listener);
}
}
/**
* DOM 事件解除安裝
* el DOM元素
* eventName 事件名
* listener 監聽函式
* capture 是否是捕獲階段
*/
function uninstall(el, eventName, listener, capture) {
if (el.removeEventListener) {
el.removeEventListener(eventName, listener, capture);
}else {
el.detachEvent('on' + eventName, listener);
}
}
下面來測試一下:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
</head>
<body>
<div id="clickDiv" style="height:100px;width:100px;background:green;"></div>
<button id="install">事件掛載</button>
<button id="uninstall">事件解除安裝</button>
</body>
<script>
/**
* DOM 事件掛載
* el DOM元素
* eventName 事件名
* listener 監聽函式
* capture 是否是捕獲階段
*/
function install(el, eventName, listener, capture) {
if (el.addEventListener) {
el.addEventListener(eventName, listener, capture);
}else {
el.attachEvent('on' + eventName, listener);
}
}
/**
* DOM 事件解除安裝
* el DOM元素
* eventName 事件名
* listener 監聽函式
* capture 是否是捕獲階段
*/
function uninstall(el, eventName, listener, capture) {
if (el.removeEventListener) {
el.removeEventListener(eventName, listener, capture);
}else {
el.detachEvent('on' + eventName, listener);
}
}
(function(){
var clickDiv = document.getElementById("clickDiv");
var installButton = document.getElementById("install");
var uninstallButton = document.getElementById("uninstall");
installButton.onclick=function(){
install(clickDiv, 'click', divClick, false);
}
uninstallButton.onclick=function(){
uninstall(clickDiv, 'click', divClick, false);
}
function divClick(){
console.log('divClick');
}
})()
</script>
</html>
剛進來頁面的時候,點選div沒有反應,點選事件掛載按鈕以後,再點選DIV會列印,因為事件被掛載了:
然後再點選事件解除安裝,div的點選就沒有列印了,因為事件已經被解除安裝了
是相容IE的,給個贊吧!
相關文章
- React 事件和 Dom 事件React事件
- Dom事件事件
- DOM - 事件事件
- javascript實現的對相容各個瀏覽器事件封裝JavaScript瀏覽器事件封裝
- 比較全的oracle事件解釋Oracle事件
- Linux裝置掛載和解除安裝Linux
- linux磁碟掛載與解除安裝Linux
- DDD中事件與命令比較事件
- jQuery實現DOM元素事件動態繫結jQuery事件
- js實現的通用相容低版本IE瀏覽器的事件註冊和刪除JS瀏覽器事件
- DOM事件類事件
- DOM事件流事件
- DOM事件探索事件
- [Linux]檔案掛載和解除安裝Linux
- DOM0事件和DOM2事件模型 —— JS中的設計模式和元件封裝事件模型JS設計模式元件封裝
- 事件風暴與領域故事的比較事件
- 在DISM中,掛載(Mounting)和解除安裝(Unmounting)掛載點(Mount Point)索引號(Index)解除安裝(Unmounting)索引Index
- DOM 事件詳解事件
- DOM事件機制事件
- js Dom之事件JS事件
- DOM事件簡介事件
- jquery DOM&事件jQuery事件
- DOM Ready 事件事件
- 事件冒泡、事件捕獲、DOM0級事件處理程式、DOM2級事件處理程式事件
- 【Windows】 多個net framework 版本,怎麼解除安裝比較老的WindowsFramework
- [DOM Event Learning] Section 4 事件分發和DOM事件流事件
- Redmine外掛的安裝與解除安裝,知識庫外掛安裝。
- 如何優雅的封裝一個DOM事件庫封裝事件
- 事件相容處理事件
- Linux下掛載及解除安裝ISO檔案Linux
- Linux精講——磁碟掛載mount/解除安裝umountLinux
- javaScript事件,Bom,Dom物件JavaScript事件物件
- DOM事件第一彈事件
- 相容所有瀏覽器的阻止事件冒泡封裝瀏覽器事件封裝
- 入門:解除安裝Oracle的實現方法Oracle
- Mac 下 brew的解除安裝 外掛Mac
- fxfactory解除安裝不乾淨?Fxfactory及外掛解除安裝教程
- 查詢語句系列—掛載和解除安裝資料