JavaScript事件是由造訪Web頁面的使用者所引起的一系列操作;
例如:使用者點擊;當使用者執行某些操作的時候,再去執行一系列程式碼;
一 事件介紹
事件一般是用於瀏覽器和使用者操作進行互動;最早是IE和Netscape Navigator中出現,作為分擔伺服器端元算負載的一種手段;
而DOM2級規範開始嘗試以符合邏輯的方式標準化DOM事件;
IE9/Firefox/Opera/Safari和Chrome全部實現了"DOM2級事件"模組的核心部分;
IE8之前瀏覽器仍使用其專有事件模型;
JavaScript有三種事件模型:內嵌模型/腳本模型和DOM2模型;
二 內嵌模型(HTML事件處理程序)
這種模型是最傳統的簡單的一種處理事件的方法;
在內聯模型中,事件處理函數是HTML標籤的屬性,用於處理指定事件;
雖然內聯在早期使用較多,但它是和HTML混寫的,並沒有與HTML分離;
在HTML中把事件處理函數當作屬性來執行JS程式碼;
注意單雙引號;
在HTML中把事件處理函數當作屬性來執行JS函數;
執行JS的函數;
PS:函數不得放到window.onload裡面,這樣就看不見了;
三 腳本模型(DOM0級事件處理程序)
// 由于内联模型违反了HTML和JavaScript代码层次分离的原则; // 我们可以在JavaScript中处理事件,这种处理方式就是脚本模型; var input = document.getElementsByTagName('input')[0]; // 得到input对象; input.onclick = function(){ // 匿名函数执行; alert('Lee'); } // PS:通过匿名函数,可以直接触发对应的代码; // 也可以通过指定的函数名赋值的方式来执行函数(赋值的函数名不要跟括号); input.onclick = box; // 把匿名函数赋值给事件处理函数; input.onclick = null; // 删除事件处理程序;
四 事件處理函數
// JavaScript可以處理的事件類型為:滑鼠事件/鍵盤事件/HTML事件;
JavaScript事件處理函數及其使用列表
事件處理函數 影響的元素 何時發生
onabort 圖片 當影像載入中斷時;
onblur 視窗/框架/所有表單物件 當焦點從物件移開時;
onchange 輸入框/選擇框/文字域 當改變一個元素的值且失去焦點時;
onclick 連結/按鈕/表單物件/圖像等 當使用者點擊物件時;
ondblclick 連結/按鈕/表單物件 當使用者雙擊物件時;
ondragdrop 視窗 當使用者將一個物件拖曳到瀏覽器視窗時;
onError 視窗/框架/所有表單物件 當腳本中發生語法錯誤時;
onfocus 視窗/框架/所有表單物件 當按一下滑鼠或將滑鼠移到視窗或框架時;
onkeydown 文件/圖片/連結/表單 當按鍵被按下時;
onkeypress 文件/圖像/連接/表單 當按鍵被按下然後放開時;
onkeyup 文件/圖片/連結/表單 當按鍵被放開時;
onload 主體/框架集/圖片 文件或圖片載入後;
onunload 主體/框架集 文件或框架集卸載後;
onmouseout 連結 當圖示移除連結時;
onmouseover 連結 當滑鼠移到連結時;
onmove 視窗 當瀏覽器視窗移動時;
onreset 表單重設按鈕 點選表單的reset按鈕;
onresize 視窗 當改變瀏覽器視窗大小;
onselect 表單元素 當選擇表單物件時;
onsubmit 表單 當傳送表格到伺服器時;
// PS:對於每一個事件,它都有自己的觸發範圍和方式,事件處理將失效;
1.滑鼠事件,頁面所有元素都可觸發
(1).click:當使用者點擊滑鼠按鈕或按下回車鍵時觸發;
input.onclick = function(){
alert('Lee');
};
(2).dblclick:當使用者雙擊滑鼠按鈕時觸發;
input.ondblclick = function(){
alert('Lee');
}
(3).mousedown:當使用者按下滑鼠還未彈起時觸發;
input.onmousedown = function(){
alert('Lee');
}
(4)mouseup:當使用者釋放滑鼠按鈕時觸發;
input.onmouseup = function(){
alert('Lee');
}
(5).mouseover:當滑鼠移到某個元素上方時觸發;
input.onmouseover = function(){
alert('Lee');
}
(6).mouseout:當滑鼠移出某個元素上方時觸發;
input.onmouseout = function(){
alert('Lee');
}
(7).mousemove:當滑鼠指標在元素上移動時觸發;
input.onmousemove = function(){
alert('Lee');
}
2.鍵盤事件
(1).keydown:當使用者按下鍵盤上任意鍵觸發,如果按住不放,會重複觸發;
onkeydown = function(){
alert('Lee');
}
(2).keypress:當使用者按下鍵盤上的字元鍵觸發,如果按住不放,會重複觸發;
onkeypress = function(){
alert('Lee');
}
(3).keyup:當使用者釋放鍵盤上的鍵觸發;
onkeyup = function(){
alert('Lee');
}
3.HTML事件
(1).load:當頁面完全載入後(包含所有圖片/JavaScript檔案/CSS檔案等外部資源),就會觸發window上面的load事件;
window.onload = function(){
alert('Lee');
}
// 圖片上面也可以觸發load事件,無論是在DOM中的圖片元素或HTML中的圖片元素;
// 因此可以在HTML中為任何映像指定onload事件處理程序;
// PS:新圖片元素不一定是從新增到文件後才開始下載,只要設定src屬性就會開始下載;
// <script>元素也會觸發load事件,以便開發人員確定動態載入的JavaScript檔案是否載入完畢;<br /> // 與圖像不同,只有在設定了<script>元素的src屬性並將該元素加入文件後,才會開始下載JavaScript檔案;</script>
(2).unload:當文件完全卸載後觸發;
// 只要使用者從一個頁面切換到另一個頁面,就會發生unload事件;
// 而利用這個事件最多的情況是清除引用,以避免記憶體洩漏;
window.onunload = function(){
alert('Lee');
}
(3).select:當使用者選擇文字方塊(input或textarea)內容改變且失去焦點後觸發;
input.onselect = function(){
alert('Lee');
}
(4).change:當文字方塊(input或textarea)內容改變且失去焦點後觸發;
input.onchange = function(){
alert('Lee');
}
(5).focus:當頁面或元素獲得焦點時在window及相關元素上面觸發;這個事件不會冒泡;
input.onfocus = function(){
alert('Lee');
}
(6).blur:當頁面或元素失去焦點時在window及相關元素上觸發;這個事件不會冒泡;
input.onblur = function(){
alert('Lee');
}
(7).submit:當使用者點選提交按鈕在