Events & Event Handling

Slides:



Advertisements
Similar presentations
互動表單的應用.
Advertisements

第5章 HTML 標籤介紹.
08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
P303 HTML/DHTML/CSS/JavaScript 專業HTML網頁設計 陳錦輝.
14 JavaScript语言基础 JavaScript是一种轻量级、解释型的Web开发语言。所谓轻量级,就是语言的体系结构不是很庞杂,例如,没有C、Java等语言中的类、内存管理、系统管理等高深的知识范畴;所谓解释型,就是语言在浏览器或服务器等环境中直接被解释执行,不需要对源代码进行编译操作。
2015/Spring 跨平台行動程式進階應用 王派洲老師
5.1 – 表格(FORM) 輸入元素 : 兩種傳遞方法 : GET or POST 範例 1. 文字欄位 Text box
JavaScript in Web Browser
DreamWeaver MX (II) 林偉川.
張智星 台大資工系 多媒體檢索實驗室 第八章 事件 張智星 台大資工系 多媒體檢索實驗室.
本單元要介紹『事件』的觀念,並先以『計時器事件』為例來說明。
Ajax编程技术 第一章 Ajax简介.
網頁瀏覽器.
Q101 在701 SDX Linux上的標準安裝與使用程序v2
滑鼠移動與按鍵事件 JavaScript 滑鼠移動與按鍵事件.
HTML 钟晖云 QQ:
JavaScript 语言3 学习网站:心蕊设计
SQL Stored Procedure SQL 預存程序.
What’s New in HTML5.
JavaScript 靜宜大學 資管系 楊子青.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
第8章 键盘、鼠标事件和图形 Visual Basic为用户提供了键盘、鼠标事件用于响 应键盘操作和鼠标操作。在Visual Basic中,大多 数控件都有键盘事件和鼠标事件。这一章将讲述 与键盘和鼠标相关的内容,除此之外,还有通常 在鼠标事件中出现的关于绘制图形方面的内容。
附錄E Access事件類別 主從式資料庫系統 - 附錄E.
湖北职院计科系.
第十二章 事件 12-1 KeyPress 12-2 KeyDown及KeyUp
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
網頁切換移轉 JS vs. ASP.NET.
Visual Basic 物件導向程式設計簡介.
Android App簡介及 App Inventor 2體驗 靜宜大學資管系 楊子青
系統設定 IE8相容性檢視
高等学校计算机基础教育教材 Visual Basic 6.0 程序设计 上海中医药大学现代教育技术中心 计算机教学部 1.
網頁切換移轉 JS vs. ASP.NET.
网 站 设 计 与 建 设 Website design and developments
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
VS.NET 2003 IDE.
VB程序设计语言 主讲教师:王 杨.
Ch20. 計算器 (Mac 版本).
網路程式設計期末project B 張芸菱.
2.2 Web界面设计 信息工程系 向模军 Tel: QQ:
第一個cordova project Cordova project建立與平台設定,均藉由cli(command line interface來完成 建立project請打開命令提示字元視窗應輸入下列命令 cordova create hello tw.edu.stust.mis.hello HelloWorld.
Ajax编程技术 第六章 调试与错误处理.
網頁程式概論 建國科技大學資管系 饒瑞佶 2015/9 V1 2016/4 V2 2016/9 V3.
表格(HTML – FORM).
JavaScript Sunxiaoshen.
Chime.
安裝 / 操作 flashget SOP (以Win 7 作業系統為範例)
一用就上手3D列印設計 AUTODESK 123D Tinkercad 3D 設計網站
個人網路空間 資訊教育.
GridView.
GridView操作 (II).
如何使用Gene Ontology 網址:
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
Flash 8:開口中 從Y:\ 複製『開口中.fla』到 D:\ 更改名稱為:s3x99 (你的班號) 雙按開啟檔案 2019年5月7日
表格(HTML – FORM)
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
MiRanda Java Interface v1.0的使用方法
JQuery 標籤操作 建國科技大學 資管系 饒瑞佶 2013/4 V1.
Dreamweaver 進階網頁製作 B 許天彰.
第八章: 輸入裝置-鍵盤與滑鼠.
Brief Guide of FrontPage
1、复选框和单选按钮 2、框架 3、列表框和组合框 4、滚动条 5、鼠标器事件 6、键盘
Cloud Training Material- 事件 Sherman Wang
電子郵件簡報.
多站台網路預約系統之 AJAX即時資料更新機制
What is “this”? 在物件導向程式設計中,類別的定義就是在說明如果創建了“這個物件”的話,它會具有那些屬性與功能,以及這些功能是如何實現的。 而所謂的“這個物件”就以 this 來表示。 當我們在JavaScript與jQuery中寫 script 程式(函式)時,“誰”呼叫這個函式,這個“誰”就是該函式中所謂的.
多國語系 建國科技大學 資管系 饒瑞佶.
第五章 自訂佈景主題與文字處理 講授者:詹雅愔.
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
Unix指令4-文字編輯與程式撰寫.
表单页面 表单是用户利用浏览器对Web站点网络数据库进行查询的一种界面,用户利用表单可以输入信息或选择选项等,然后将这些信息提交给服务器进行处理。通过表单,既可以将浏览器的信息发送到Internet服务器上,同时表单也可以使用户与站点的浏览者交互或从浏览者那里收集信息。它是网页的设计者和使用者相互交流的工具。表单对象包括文本域(单行、多行、密码)、列表、菜单、复选框、单选框、按钮等。
Presentation transcript:

Events & Event Handling 靜宜大學資管系 蔡奇偉 副教授

內容大綱 事件驅動模式的程式 事件的分類 四種事件模型 事件的差異 瀏覽器均有的事件 瀏覽器獨有的事件 事件的分類與說明 指定事件處理碼的方法 事件處理碼的傳回值 事件物件 事件的傳遞方式

事件驅動模式的程式 所有與瀏覽者互動的 JavaScript 程式都採用事件驅動(event driven)的架構。在這個架構下,瀏覽器會產生一些事件(event)來反映某些有趣的狀況發生在網頁或網頁元件中;譬如以下的狀況都會觸發瀏覽器產生相關的事件: 網頁完全下載後、 瀏覽者的滑鼠遊標滑過超連結、 瀏覽者按下表單中的傳送按鈕、…、等等。 若對處理某事件有興趣,你就必須在適當的元件中設定此事件的處理碼(event handler)。當這事件發生時,瀏覽器就會自動執行你所提供的事件處理碼。

事件的分類 我們可以把事件分為下列四類: 使用者操作引發的事件, 如:按下滑鼠鍵、改變文字欄裏的內容、移動滑鼠游標通過超連結、…、等等 瀏覽器狀態改變所引發的事件,如:載入新網頁和離開網頁 計時器(Timer)引發的事件 錯誤( Error )引發的事件

四種事件模型 原始的事件模型 標準的事件模型 IE 的事件模型 Netscape 4 事件模型 又稱為 DOM Level 0 的事件模型 所有具有 JavaScript 功能的瀏覽器都支援此事件模型 標準的事件模型 DOM Level 2 所定義的事件模型 Netscape 6 和 Mozilla 瀏覽器支援 IE 的事件模型 IE 4 以後的 IE 瀏覽器所採用事件模型 Netscape 4 事件模型 Netscape 4 的事件模型 Netscape 6 仍支援其中部分的功能 由於瀏覽器事件模型的差異性,使用某個瀏覽器(如 IE )獨有的事件進階功能常會造成其它瀏覽器(如 Netsacpe)的錯誤。

事件的差異 Netscape 4、 IE 和 DOM Level 2 各有若干特殊的事件,我們必須注意這些不相容性。 Netscape 4 的事件通常只能用在特定的 HTML 元件。 IE 和 DOM Level 2 大部份的事件都適用於所有的 HTML 元件。 三者的事件傳遞方式不同

瀏覽器均有的事件 Abort Blur Change Click DblClick Error Focus KeyDown KeyPress KeyUp Load MouseDown MouseMove MouseOut MouseOver MouseUp Move Reset Resize Select Submit Unload

瀏覽器獨有的事件 Netscape IE DragDrop BeforeCopy BeforeCut BeforePaste BeforePrint BeforeUnload Bounce ContextMenu Copy Cut Drag DragEnd DragEnter DragLeave DragOver DragStart Drop FilterChange Finish FocusIn FocusOut Help MouseEnter MouseLeave MouseWheel MoveEnd MoveStart Paste Scroll SelectStart Start

事件的分類與說明 滑鼠事件 鍵盤事件 表單事件 文件事件 視窗事件 其它事件

滑鼠事件 Click 發生時機:使用者在網頁元件上點一下滑鼠左鍵。 適用元件: N2, IE3: a, area, input N4: button, radio, checkbox, submit, reset, link HTML4, N6, IE4: 大部分元件 註:若處理碼傳回 false,則取消元件的預設行為(如 follow link, reset, submit 等)

發生時機:使用者在網頁元件上快速點兩次滑鼠左鍵。 適用元件: DblClick 發生時機:使用者在網頁元件上快速點兩次滑鼠左鍵。 適用元件: N4: document, link HTML4, N6, IE4: 大部分元件 MouseDown 發生時機:使用者在網頁元件上按住滑鼠左鍵。 適用元件: N4: button, document, link, a, area, img HTML4, N6, IE4: 大部分元件

發生時機:使用者把滑鼠游標移出網頁元件。 適用元件: MouseMove 發生時機:使用者在網頁上移動滑鼠游標。 適用元件: HTML4, N6, IE4: 大部分元件 MouseOut 發生時機:使用者把滑鼠游標移出網頁元件。 適用元件: HTML4, N6, IE4: 大部分元件 N4: layer, link

發生時機:使用者把滑鼠游標移到網頁元件的上方。 適用元件: MouseOver 發生時機:使用者把滑鼠游標移到網頁元件的上方。 適用元件: HTML4, N6, IE4: 大部分元件 註:在超連結元件中,處理碼傳回 true 可制止超連結 的 URL 出現在狀態行中。 MouseUp 發生時機:使用者放開滑鼠的左鍵。 適用元件: HTML4, N6, IE4: 大部分元件 Netscape: a, area, img, button, document, link

底下的滑鼠事件設定可製造出按鈕下壓的效果。不過只適用於 IE,而不適用於 Netscape 4。 範例 <a href="http://www.pu.edu.tw" onmousedown='document.img1.src="down.jpg"' onmouseout='document.img1.src="normal.jpg"' onmouseover='document.img1.src="over.jpg"'> <img name="img1" src="normal.jpg" border=0> </a>

鍵盤事件 KeyDown 發生時機:使用者按住鍵盤上的某一個鍵。 適用元件: 註:處理碼可傳回 false 來取消輸入的字元。 HTML4, N6, IE4: 表單元件和 body 元件 N4: input, textarea 註:處理碼可傳回 false 來取消輸入的字元。

發生時機:使用者按下然後放開鍵盤上的某一個鍵。 適用元件: KeyUp 發生時機:使用者放開鍵盤上的某一個鍵。 適用元件: HTML4, N6, IE4: 表單元件和 body 元件 N4: input, textarea KeyPress 發生時機:使用者按下然後放開鍵盤上的某一個鍵。 適用元件: HTML4, N6, IE4: 表單元件和 body 元件 N4: input, textarea 註:處理碼可傳回 false 來取消輸入的字元。

表單事件 Blur 發生時機:使用者把輸入游標移出網頁元件。 適用元件: Focus 發生時機:使用者把輸入游標移入網頁元件。 適用元件: HTML4, N2, IE3: button, input, label, select, textarea N3, IE4: body Focus 發生時機:使用者把輸入游標移入網頁元件。 適用元件: HTML4, N2, IE3: button, input, label, select, textarea N3, IE4: body

發生時機:使用者按下表單的 reset 按鈕。 適用元件: form 註:處理碼可傳回 false 來取消表單的重置。 Change 發生時機:表單元件的內容改變了。 適用元件: HTML4, N2, IE3: input, select, textarea Reset 發生時機:使用者按下表單的 reset 按鈕。 適用元件: form 註:處理碼可傳回 false 來取消表單的重置。

Submit 發生時機:使用者按下表單的 submit 按鈕。 適用元件: form 註:處理碼可傳回 false 來取消表單的傳送。 Select 發生時機:使用者拉選 input 或 textArea 內的文字。 適用元件: input, textArea

文件事件 Load 發生時機:文件載入瀏覽器視窗之後。 適用元件: Unload 發生時機:離開網頁時。 適用元件: HTML4, N2, IE3: body, frameset N3, IE4: img N6, IE4: iframe, object Unload 發生時機:離開網頁時。 適用元件: HTML4, N2, IE3: body, frameset

視窗事件 Move 發生時機:使用者移動瀏覽器視窗。 適用元件: Resize 發生時機:使用者變更瀏覽器視窗的大小。 適用元件: N4, IE4: body, frameset Resize 發生時機:使用者變更瀏覽器視窗的大小。 適用元件: N4, IE4: body, frameset

其它事件 Abort 發生時機:當瀏覽者藉由選取另一個超連結、按下「停止」 按鈕、或其他的方式來放棄圖片的載入時。 適用元件: Error 發生時機:當瀏覽者藉由選取另一個超連結、按下「停止」 按鈕、或其他的方式來放棄圖片的載入時。 適用元件: N3, IE4: img Error 發生時機:載入圖片時發生錯誤。 適用元件: N3, IE4: img

指定事件處理碼的方法 事件名稱和事件處理碼名稱 在 HTML 標籤中指定事件處理碼 在 JavaScript 程式中指定事件處理碼 IE 獨有的指定事件處理碼方式

事件名稱和事件處理碼名稱 只要在事件名稱之前加上 on 就是事件處理碼的名稱。譬如:事件 Abort 的處理碼是 onAbort、事件 MouseDown 的處理碼是 onMouseDown 、…、等等。 不過,由於 HTML 並不區別屬性名稱的大小寫,再加上JavaScript 和 XHTML 都用小寫的事件處理碼名稱,所以目前的趨勢是用小寫的事件處理碼名稱。所以前述的大小寫混合的處理碼名稱可分別改寫成 onabort 和 onmousedown。

<tag eventHandler="JavaScript Code"> 在 HTML 標籤中指定事件處理碼 若要處理某特定事件,你可以在處理該事件的元件標籤中,設定代表該事件的處理碼屬性;此屬性的值是一段處理該事件的 JavaScript 程式。指定的方式如下: <tag eventHandler="JavaScript Code"> 譬如: <IMG SRC=image.gif onabort="alert('Are you really too busy to wait?')"> 指定事件處理碼: 當瀏覽者藉由選取另一個超連結、按下「停止」按鈕、或其他的方式來放棄圖片的載入時。

有些網路小說網站用底下的事件處理碼設定技巧來防止瀏覽者拷貝網頁的文字: 範例 <body oncontextmenu="return false" onselectstart="return false" oncopy="return false"> 取消瀏覽器滑鼠右鍵的功能 取消瀏覽器選取網頁內容的功能 取消瀏覽器拷貝網頁內容的功能 不過這個技巧僅適用於 IE 瀏覽器,對其他瀏覽器無效。

在 JavaScript 程式中指定事件處理碼 每個 HTML 元件的事件屬性都有對應的 JavaScript 屬性。因此,我們可以用 JavaScript 來指定元件的事件處理碼。譬如: <form name=myform> <input name=b1 type=button value=“按我吧!”> </form> <script> document.myform.b1.onclick=function() {alert(“謝謝”);}; </script> 事件屬性 事件屬性的值必須是一個函式

下面的程式使得按網頁中任一的超連結,都會先出現一個詢問是否要連結的對話視窗。 範例 <script> function confirmLink () { return confirm(“確定要連到 “ + this.href + “?”); } function confirmAllLinks () for (var k = 0; k < document.links.length; k++) Document.links[k].onclick = confirmLink; </script> … <body onload=“confirmAllLinks();”>

IE 獨有的指定事件處理碼方式 IE 4 以上的 IE 瀏覽器提供以下範例所示的事件處理碼指定方式: <script for=warning > alert(“Don’t push me!”); </script> … <input type=button id=warning value=“Click me”> 兩者的屬性值相同

事件處理碼的傳回值 一般而言,若事件處理碼的傳回值是 false 的話,會制止瀏覽器處理該事件的預設行為。比方說,按下表單的傳送按鈕,瀏覽器會開始傳送表單內容回伺服器。下面的例子示範如何取消傳送表單: <script> validate_form () { // check form data if (bad_data) return false; } … <form onsubmit=“return validate_form();”>

若事件處理碼不傳回一個值的話,瀏覽器則按照預設的方式處理該事件。 上面規則的一個例外情形是:當滑鼠移到超連結上時,瀏覽器會在狀態欄上顯示超連結的 URL 資訊。若要取消顯示這個資訊,我們必須把 mouseover 處理碼的傳回值設成 true,如底下的範例所示: <a href=“help.html” onmouseover=“return true;”>Help</a> 若事件處理碼不傳回一個值的話,瀏覽器則按照預設的方式處理該事件。

事件物件 什麼是事件物件? IE 的事件物件 Netscape 4 的事件物件

什麼是事件物件? 每當一個事件發生時,瀏覽器會建立一個事件物件(event object),用來提供更詳盡的事件資訊,諸如:滑鼠的位置、按下那一個滑鼠按鈕、鍵盤按鍵值、…、等等。因此,我們可以運用事件物件裏的記錄來更精細地處理事件。 然而,Netscape 4、IE、和 DOM 2 提供事件物件的方式和內容並不相同,這使得撰寫適用於三者的事件處理程式變得複雜許多。

IE 的事件物件 IE 的事件物件是 window.event 這個變數。底下列出它的屬性: 屬性名稱 型態 儲存項目 type 字串 事件的名稱,如 click, mouseover ,…, 等等。 srcElement 物件 事件發生所在的元件 button 整數 1: 按下滑鼠的左按鈕 2: 按下滑鼠的右按鈕 4: 按下滑鼠的中按鈕

屬性名稱 型態 儲存項目 clientX clientY 整數 事件發生時滑鼠的相對於視窗左上角的座標位置。 offsetX offsetY 事件發生時的滑鼠相對於發生元件左上角的座標位置。 alkKey ctrlKey shiftKey boolean 事件發生時,是否按下 Alt、Ctrl、或 Shift 鍵。 true: 按下 false: 未按下 keyCode keydown 或 keyup 事件傳回的按鍵 Unicode 字碼。你可以用函式 String.fromCharCode() 將這字碼轉成字串。

屬性名稱 型態 儲存項目 fromElement 物件 進入事件發生元件之前,產生 mouseover 事件的元件 toElement mouseout 事件發生元件所進入的元件。 cancelBubble boolean 取消事件向上傳遞(bubbling)的機制。 returnValue 若設成 false,可以制止瀏覽器執行事件的預設行為,換句話說,這和之前所述的事件處理碼傳回 false 具有相同的作用。 mouseout fromElement mouseover event Element toElement

底下程式讓 Enter 鍵連結到書本的目錄網頁、單引號鍵連結到下一章。 範例 <script language=javascript> document.onkeydown=nextpage function nextpage() { if (event.keyCode==13) // CR location="showbook.asp?bl_id=2145" if (event.keyCode==39) // ‘(單引號) location="readchapter.asp?Bu_id=45468&bl_id=2145" } </script>