日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

实例讲解《Microsoft AJAX Library》(2):DomEvent类

發布時間:2025/4/16 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实例讲解《Microsoft AJAX Library》(2):DomEvent类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言:
大家都知道Ajax的之所以能如此豐富地實現,客戶端腳本功不可沒。而像Asp.Net Ajax這般龐大的工程,沒有腳本類庫的支撐是很難想象的。《Microsoft AJAX Library》就是Asp.Net Ajax的腳本類庫。其實網上流行的腳本類庫是很多的,也有一些是十分成功的,例如:prototype.js腳本類庫。這些腳本類庫封裝了很多常用的功能,通過使用這些腳本類庫我們能極大的提高工作效率。

這篇文章依賴于www.AspNetResources.com網站2007-01-24發布的《Microsoft AJAX Library》PDF版本。DflyingChen對此有完整而準確的翻譯。
(文章地址:http://www.cnblogs.com/dflying/archive/2007/02/09/639638.aspx)

此篇文章面向的對象是那些可能連“prototype.js”都沒有聽說過,對“腳本類庫”一詞還很陌生的朋友。文章也只是舉一些簡單而便于理解的示例幫助他們更好的理解,所以可以說沒有任何技術含量,與DflyingChen對英文原版的發現和翻譯之功德相比,難及其十一。在此向DflyingChen獻上敬意。

相關鏈接:
實例講解《Microsoft AJAX Library》(1):DomElement類
實例講解《Microsoft AJAX Library》(2):DomEvent類

正文:
準備工作:
1:安裝 Asp.Net Ajax(引入AjaxControlToolkit名域)。

2:頁面上拖個ToolkitScriptManager


說明:

標注有圖標的為靜態方法,無須實例化對象即可使用。

1:addHandler (element, eventName, handler)? 或者 $addHandler (element, eventName, handler)
先說明一下帶“$”和不帶“$”有什么區別。答案是:沒有什么特殊的區別,就是縮寫而已,功能都是一樣的,不過加了"$"符號就沒有必要寫“Sys.UI.DomElement”這坨東西了,會爽一些(不過其實還是2個函數啦,只是函數名不同,但是函數主體是一樣的)。
addHandler的作用是為element元素添加eventName事件的處理函數handler。這樣說好像有點拗口,其實很簡單,就是給一個元素添加一個事件。
具體使用請參看《DomEvent示例頁面》源碼的yzy_addHandler和yzy_addHandler_clickhandler函數。

2:addHandlers (element, events, handlerOwner) 或者 $addHandlers (element, events, handlerOwner)
為element元素添加多個事件的相應的處理函數。這樣說好像有點拗口,其實很簡單,就是給一個元素同時添加多個事件。
具體使用請參看《DomEvent示例頁面》源碼的yzy_addHandlers函數以及yzy_addHandler_mousemoveHandler和yzy_addHandler_mouseoutHandler函數

3:clearHandlers (element) 或者 $clearHandlers (element)
將element元素擁有的所有事件處理函數去掉。
這個沒有什么好說的,具體使用請參看《DomEvent示例頁面》源碼的yzy_ clearHandlers函數吧。

4:removeHandler (element, eventName, handler) 或者 $ removeHandler (element, eventName, handler)
去掉element元素中指定的事件處理函數。和addHandler正好相反。
具體使用請參看《DomEvent示例頁面》源碼的yzy_ removeHandler函數。

5:preventDefault ()
阻止執行默認的事件處理函數。這個好像不太好理解,讓我來說白一點吧。例如一個超鏈接。它的點擊事件就是打開鏈接,對吧。這個打開鏈接的事件是默認的。現在你為超鏈添加了click事件。這時候,你再點擊超鏈接,它會先后做兩件事情:執行你的click事件,然后打開鏈接。但是我們如果只想讓它執行click事件,而不想讓它打開鏈接,那么就用這個吧。
有的朋友可能會說:用“#”號代替超鏈地址不就可以了嗎?那你看到地址欄里面的那個“#”很爽嗎?
具體使用請參看《DomEvent示例頁面》源碼的yzy_ preventDefault函數吧。注意:要先用removeHandler函數添加click事件才可以。不要直接在標簽里面寫onclick事件。

6:stopPropagation ()
阻止事件冒泡傳遞至父元素。有些朋友可能對javascript的事件冒泡不是很屬性,所以請允許我在此說明一下。其實事件的冒泡還是很好理解的。例如一個div里面包了一個圖片,圖片和div都有onClick事件。這時候當你點擊圖片的時候,不僅會觸發圖片的onClick事件,而且點擊事件會冒泡,同時會觸發div的onClick事件。這個就是javascropt的事件冒泡。為了便于大家的理解下面有一個完整的例子供你參考:

<!doctype?html?public?"-//W3C//DTD?XHTML?1.0?Strict//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html?xmlns="http://www.w3.org/1999/xhtml">

<head>
?
<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"?/>
?
<meta?http-equiv="Content-Language"?content="zh-CN"?/>
?
<meta?name="Keywords"?content=""?/>
?
<meta?name="Description"?content=""?/>
?
<title></title>
????
<style?type="text/css">
????*
{
????????font-size
:medium;
????????margin
:0;
????????padding
:0;
????
}
????div
{
????????border
:1px?solid?red;
????????width
:100px;
????????height
:100px;
????
}

????img
{
????????border
:2px?solid?green;
????????width
:50px;
????????height
:50px;
????
}
????
</style>
?
<script?type="text/javascript"?language="javascript"?>
?
?
function?divClick(e){
?alert(
"div's?click");
?}

?
function?imgClick(){
?alert(
"img's?click");
?
//window.event.cancelBubble?=?true;//?釋放這句話,事件就不能向上冒泡了(only?for?IE)
?}
?
</script>
</head>

<body>

<div?onclick="divClick(this);">
<img?src='xxx.gif'?onclick="imgClick();">
</div>

</body>

</html>

注意preventDefault () 和stopPropagation ()都沒有圖標,注意它們的用法和以前的區別。


下面是《DomEvent示例頁面》的源代碼:
<%@?Page?Language="vb"?AutoEventWireup="false"?CodeBehind="DomEvent.aspx.vb"?Inherits="AjaxExample.DomEvent"?%>

<%@?Register?Assembly="AjaxControlToolkit"?Namespace="AjaxControlToolkit"?TagPrefix="cc1"?%>

<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html?xmlns="http://www.w3.org/1999/xhtml"?>
<head?runat="server">
????
<title>DomEvent?示例頁面</title>
????
<style?type="text/css">
????*
{
????font-size
:medium;
????
}

????span
{
????color
:red;
????font-size
:80%;
????margin-right
:3em;
????
}
????
????#divTest
{
????margin
:10px?0?200px?10px;
????border
:1px?solid?red;
????width
:100px;
????height
:100px;
????
}
????
</style>
????
????
<script?type="text/javascript"?language="javascript">
?
????
function?yzy_addHandler(){
????????$addHandler($get(
"imgTest"),"click",?yzy_addHandler_clickHandler)//添加一個click事件
????}
????
????
function?yzy_addHandlers(){??//添加mouseover和mouseout2個事件
????????$addHandlers($get("imgTest"),{
??????????????????????????????????????mousemove:yzy_addHandler_mousemoveHandler,
??????????????????????????????????????mouseout:yzy_addHandler_mouseoutHandler
??????????????????????????????????????});
????}
????
????
function?yzy_clearHandlers(){?//移除imgTest的所有事件
????????$clearHandlers($get("imgTest"))
????}
????
????
function?yzy_removeHandler(){?//移除imgTest的click事件函數
????????$removeHandler($get("imgTest"),"click",yzy_addHandler_clickHandler)
????}

????
function?yzy_preventDefault(){
????????$addHandler($get(
"aTest"),"click",?yzy_clcikA)//添加一個click事件
????}
????
????
function?yzy_clcikA(e){
????alert(e.type);????
????
//e.preventDefault();?//把這句釋放出來,你會發現那個新畫面彈不出來了。因為preventDefault去掉了a默認的click事件處理的事件。
????}
????
????
function?yzy_stopPropagation(){
????????$addHandler($get(
"imgTest"),"click",?yzy_addHandler_clickHandler_stopPropagation)//img添加一個click事件
????????$addHandler($get("divTest"),"click",?yzy_addHandler_clickHandler_divClcik)//div添加一個click事件
????}
????
????
????
//下面的都是事件處理函數。
????function?yzy_addHandler_clickHandler(e){
????????alert(
"You?"?+??e.type?+"??the??"?+?e.rawEvent.srcElement.id);?//e.type:觸發事件的事件類型,e.rawEvent.srcElement:觸發事件的元素,注意:FF不支持rawEvent,此處為演示清晰才使用的
????}
????
????
function?yzy_addHandler_mousemoveHandler(e){
????????alert(
"You?"?+??e.type?+"??the??"?+?e.rawEvent.srcElement.id);?
????}
????
????
function?yzy_addHandler_mouseoutHandler(e){
????????alert(
"You?"?+??e.type?+"??the??"?+?e.rawEvent.srcElement.id);?
????}
????
????
function?yzy_addHandler_clickHandler_divClcik(){
????????alert(
"div's?click!");
????}
????
????
function?yzy_addHandler_clickHandler_stopPropagation(e){
????????alert(
"You?"?+??e.type?+"??the??"?+?e.rawEvent.srcElement.id);?
????????e.stopPropagation();?
//你可以通過注釋掉此句來感受事件的冒泡。
????}
????
????
</script>
</head>
<body>
????
<form?id="form1"?runat="server">
????
<div>
????????
<cc1:ToolkitScriptManager?ID="ToolkitScriptManager1"?runat="server">
????????
</cc1:ToolkitScriptManager>
????
????
</div>
????????
<div?id="divTest">
????????
<img?src="images/003.gif"?id="imgTest"?alt="a?Image!"??/>
????????
<a?href="#"?target="_blank"?id="aTest">i'm?a</a>
????????
</div>?????

????????
<input?id="Button1"?type="button"?value="addHandler"?onclick="yzy_addHandler();"?/>
????????
<input?id="Button2"?type="button"?value="addHandlers"?onclick="yzy_addHandlers();"?/><br?/>
????????
<input?id="Button3"?type="button"?value="clearHandlers"?onclick="yzy_clearHandlers();"?/><span>(先添加事件,再移除)</span><br?/>
????????
<input?id="Button4"?type="button"?value="removeHandler"?onclick="yzy_removeHandler();"?/><span>(先點addHandler按鈕添加click事件,再移除)</span><br?/>
????????
<input?id="Button5"?type="button"?value="preventDefault"?onclick="yzy_preventDefault();"?/><span>(點擊此按鈕會先給超鏈添加click事件,然后移除它的默認事件)</span><br?/>
????????
<input?id="Button6"?type="button"?value="stopPropagation?"?onclick="yzy_stopPropagation();"?/><span>(點擊此按鈕會先給img和紅色邊框的div添加click事件,然后阻止img的事件冒泡到div)</span><br?/>
????
</form>
</body>
</html>

keyword:Microsoft AJAX Library,DomElement,DomEvent,ajax DomEvent類,ajax DomElement類,腳本類庫,javascript類庫

總結

以上是生活随笔為你收集整理的实例讲解《Microsoft AJAX Library》(2):DomEvent类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。