比如說(shuō)一個(gè)頁(yè)面上有什么東西,其中有一個(gè)按鈕,按鈕被點(diǎn)擊,我們希望能夠知道并做一些操作

九臺(tái)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!
這個(gè)就叫做按鈕的點(diǎn)擊事件監(jiān)聽(tīng)
比如如下代碼
按鈕元素 有一個(gè)onclick事件(就是點(diǎn)擊事件)
當(dāng)點(diǎn)擊了 執(zhí)行函數(shù)DoClick
這就是上面的說(shuō)的監(jiān)聽(tīng)他的點(diǎn)擊事件,并進(jìn)行操作處理!(至于后臺(tái),比如說(shuō)我點(diǎn)擊了按鈕,向后臺(tái)提交一些數(shù)據(jù)如用戶名 密碼等)
jsp/html代碼:input type="button" id="but" value="測(cè)試按鈕" onclick="DoClick()"
javascript代碼
javascript
function DoClick()
{
alert('點(diǎn)擊了按鈕!希望對(duì)你有幫助!');
}
/javascript
監(jiān)聽(tīng)主要是輔助你對(duì)某個(gè)元素的特殊操作
例如:
1.點(diǎn)擊圖片-- 放大
2.地區(qū)選擇:下拉列表--聯(lián)動(dòng)
...
都是在監(jiān)聽(tīng)事件中寫(xiě)的
如果對(duì)某個(gè)元素沒(méi)有特殊草操作,只是顯示,那你就沒(méi)有必要去考慮他的每個(gè)事件
要用面向?qū)ο蟮乃枷肴タ紤]問(wèn)題
附上出處鏈接:
javascript監(jiān)聽(tīng)數(shù)組變化思路
1、定義變量arrayProto接收Array的prototype
2、定義變量arrayMethods,通過(guò)Object.create()方法繼承arrayProto
3、重新封裝數(shù)組中push,pop等常用方法。(這里我們只封裝我們需要監(jiān)聽(tīng)的數(shù)組的方法,并不做JavaScript原生Array中原型方法的重寫(xiě)的這么一件暴力的事情)
4、其他js數(shù)組變化監(jiān)聽(tīng)方法
js監(jiān)聽(tīng)數(shù)組變化實(shí)現(xiàn)方法
這里我們首先需要確定的一件事情就是,我們只需要監(jiān)聽(tīng)我們需要監(jiān)聽(tīng)的數(shù)據(jù)數(shù)組的一個(gè)變更,而不是針對(duì)原生Array的一個(gè)重新封裝。
其實(shí)代碼實(shí)現(xiàn)起來(lái)會(huì)比較簡(jiǎn)短,這一部分代碼我會(huì)直接帶著注釋貼出來(lái)
// 獲取Array原型const arrayProto = Array.prototype;const arrayMethods = Object.create(arrayProto);const newArrProto = [];
[ 'push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'].forEach(method = { // 原生Array的原型方法
let original = arrayMethods[method]; // 將push,pop等方法重新封裝并定義在對(duì)象newArrProto的屬性上
// 這里需要注意的是封裝好的方法是定義在newArrProto的屬性上而不是其原型屬性
// newArrProto.__proto__ 沒(méi)有改變
newArrProto[method] = function mutator() { console.log('監(jiān)聽(tīng)到數(shù)組的變化啦!'); // 調(diào)用對(duì)應(yīng)的原生方法并返回結(jié)果(新數(shù)組長(zhǎng)度)
return original.apply(this, arguments);
}
})let list = [1, 2];// 將我們要監(jiān)聽(tīng)的數(shù)組的原型指針指向上面定義的空數(shù)組對(duì)象// newArrProto的屬性上定義了我們封裝好的push,pop等方法list.__proto__ = newArrProto;
list.push(3); // 監(jiān)聽(tīng)到數(shù)組的變化啦! 3// 這里的list2沒(méi)有被重新定義原型指針,所以這里會(huì)正常執(zhí)行原生Array上的原型方法let list2 = [1, 2];
list2.push(3); // 3
目前為止我們已經(jīng)實(shí)現(xiàn)了數(shù)組的監(jiān)聽(tīng)。從上面我們看出,當(dāng)我們將需要監(jiān)聽(tīng)的數(shù)組的原型指針指向newArrProto對(duì)象上的時(shí)候(newArrProto的屬性上定義了我們封裝好的push,pop等方法)。這樣做的好處很明顯,不會(huì)污染到原生Array上的原型方法。
1、事件監(jiān)聽(tīng)的定義
在Javascript中,瀏覽器一般分為兩大類(lèi):
① 基于IE內(nèi)核的瀏覽器(版本號(hào)小于9的IE瀏覽器)
② 基于W3C內(nèi)核的瀏覽器(版本號(hào)大于9的IE瀏覽器、Firefox、Google等瀏覽器)
1)基本語(yǔ)法:基于IE內(nèi)核瀏覽器
dom對(duì)象.attachEvent(type,callback,capture) :為元素綁定事件監(jiān)聽(tīng)程序
參數(shù)說(shuō)明:
type:綁定的事件類(lèi)型,如onclick、onmouseover、onmouseout
callback:事件的處理程序,通常是一個(gè)匿名函數(shù)
capture:使用的瀏覽器模型,冒泡模型與捕獲模型,默認(rèn)IE8以下的瀏覽器只支持冒泡模型!
2)基本語(yǔ)法:基于W3C內(nèi)核的事件監(jiān)聽(tīng)
dom對(duì)象.addEventListener(type,callback) :為W3C內(nèi)核瀏覽器綁定事件監(jiān)聽(tīng)
參數(shù)說(shuō)明:
type:綁定事件類(lèi)型,不帶’on’前綴,如click,mouseover,mouseout
callback:事件的處理程序,通常是一個(gè)匿名函數(shù)
3、總結(jié)事件監(jiān)聽(tīng)的區(qū)別
IE內(nèi)核的監(jiān)聽(tīng)方式與W3C內(nèi)核的監(jiān)聽(tīng)方式:
①方式不同
IE內(nèi)核的瀏覽器使用attachEvent進(jìn)行綁定
W3C內(nèi)核的瀏覽器使用addEventListener進(jìn)行綁定
②參數(shù)不同
IE內(nèi)核瀏覽器,其綁定方式一共有三個(gè)參數(shù)type,callback,capture(使用的瀏覽器模型)
W3C內(nèi)核瀏覽器,其綁定方式一共有二個(gè)參數(shù),type和callback
③type參數(shù)不同
IE內(nèi)核的瀏覽器,type是需要添加’on’前綴的,如onclick
W3C內(nèi)核瀏覽器,type是不需要添加’on’前綴的,如click
④觸發(fā)順序不同
IE內(nèi)核的瀏覽器,其事件監(jiān)聽(tīng)是先綁定后觸發(fā),后綁定的先觸發(fā)
W3C內(nèi)核的瀏覽器,其事件監(jiān)聽(tīng)是先綁定先觸發(fā),后綁定的后觸發(fā)
js 監(jiān)聽(tīng)到頁(yè)面關(guān)閉或頁(yè)面跳轉(zhuǎn)事件。
javascript捕獲窗口關(guān)閉事件有兩種方法 onbeforeunload(),onUnload() 用法有兩種:
1. function
window.onbeforeunload() { alert("遠(yuǎn)標(biāo)培訓(xùn)為您關(guān)閉窗口")} function
window.onunload() { alert("遠(yuǎn)標(biāo)培訓(xùn)為您關(guān)閉窗口")}
2.Onunload,onbeforeunload都是在刷新或關(guān)閉時(shí)調(diào)用,可以在script腳本中通過(guò)window.onunload來(lái)指定或者在body里指定。
區(qū)別在于onbeforeunload在onunload之前執(zhí)行,它還可以阻止onunload的執(zhí)行。
javascript的onbeforeunload()和onunload()兩個(gè)事件。
相同點(diǎn):
兩者都是在對(duì)頁(yè)面的關(guān)閉或刷新事件作個(gè)操作。
不同點(diǎn):
unbeforeunload()事件執(zhí)行的順序在onunload()事件之前發(fā)生。(因?yàn)椋瑄nbeforeunload()是在頁(yè)面刷新之前觸發(fā)的事件,而onubload()是在頁(yè)面關(guān)閉之后才會(huì)觸發(fā)的)。
unbeforeunload()事件可以禁止onunload()事件的觸發(fā)。
onunload()事件是無(wú)法阻止頁(yè)面關(guān)閉的。
瀏覽器的兼容
onunload:
IE6,IE7,IE8 中 刷新頁(yè)面、關(guān)閉瀏覽器之后、頁(yè)面跳轉(zhuǎn)之后都會(huì)執(zhí)行;
IE9 刷新頁(yè)面 會(huì)執(zhí)行,頁(yè)面跳轉(zhuǎn)、關(guān)閉瀏覽器不能執(zhí)行;
firefox(包括firefox3.6) 關(guān)閉標(biāo)簽之后、頁(yè)面跳轉(zhuǎn)之后、刷新頁(yè)面之后能執(zhí)行,但關(guān)閉瀏覽器不能執(zhí)行;
Safari 刷新頁(yè)面、頁(yè)面跳轉(zhuǎn)之后會(huì)執(zhí)行,但關(guān)閉瀏覽器不能執(zhí)行;
Opera、Chrome 任何情況都不執(zhí)行。
onbeforeunload:
IE、Chrome、Safari 完美支持
Firefox 不支持文字提醒信息
Opera 不支持
IE6,IE7會(huì)出現(xiàn)bug
可以。
原生JS使用 dispatchEvent 觸發(fā)事件;
jQuery使用 trigger 觸發(fā)事件
也可以直接運(yùn)行那個(gè)函數(shù)。
失敗要看報(bào)錯(cuò)信息,是不是缺少必要參數(shù)。
名稱(chēng)欄目:javascript監(jiān)聽(tīng),js監(jiān)聽(tīng)dom
分享路徑:http://chinadenli.net/article2/dsipooc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、App設(shè)計(jì)、網(wǎng)站導(dǎo)航、用戶體驗(yàn)、網(wǎng)站改版、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)