建立可被取消的預設事件處理器
[重要說明]:本小節內容由網友閒雲野鶴傾情提供,謝謝他的分享。
預設事件處理器用於在元件內部對某些事件進行預設動作相應,這在很多元件裡面都是很普遍的。這樣元件可以觸發某些事件,預設對觸發的事件進行處理,比如在可關閉的titlewindow視窗中,我們單擊頂部的關閉按鈕,titlewindow內部的預設關閉事件處理器對該事件進行響應,執行關閉當前視窗的操作。這樣存在一種情況,有時候我們需要在關閉視窗前先提示使用者將要關閉視窗,是否繼續等類似的提示,如果使用者確認需要關閉,那麼就關閉,否則不關閉。對於後面的一種情況,我們需要阻止預設事件處理器的執行。類似的情況同樣發生在我們自行開發的一些flex元件中,所以有必要討論一下如何建立乙個可被取消的預設事件處理器。
首先,我們要在元件外部自定義對事件的處理器,而且這個處理器的執行優先順序要高於預設的事件處理器。也就是說,元件內部的事件處理器的優先順序要低於外部的處理器。對於元件外部的事件處理器來說,應有某些方法可以阻止預設事件處理器的執行,具體的實現過程有4個步驟:
1)在元件內部,建立事件時要設定該事件為可被取消,也就是要設定事件的cancelable標誌為true,該標誌對應事件建構函式event()的第三個引數。
2)在元件內部,新增預設事件偵聽處理器時要使用eventpriority.default_handler優先順序,於是該事件的預設處理器的優先順序就低於普通的事件處理器的優先順序。
3)在元件外部,在自定義的事件處理器**中,要呼叫event.preventdefault()方法來阻止事件在元件內部的預設事件處理器的執行。
4)在元件內部,預設的事件處理器**中使用event.isdefaultprevented()來檢測使用者是否阻止了預設事件處理。
**清單1-7是演示**,在元件的內部,我們定義了乙個alarm事件該事件的預設處理器用於處理alarm事件。
**清單1-7 停止預設事件處理器的演示**
package**清單1-8是一段簡單的測試**,我們定義了乙個alarm事件的偵聽器,在其內部呼叫event.preventdefault()來阻止該事件的預設執行行為。//一種簡單方法,觸發乙個可被取消的帶預設事件處理的事件。
public function triggeralarm():void
// "alarm"事件的預設處理
protected function handlealarm( event:event ):void
} } // end class
} // end package
**清單1-8 測試**
<?怎麼樣,很簡單吧!這是乙個簡單但是很有用的技巧,建立可被取消的預設事件行為是flex元件開發的乙個重要部分。xmlversion
="1.0"
encoding
="utf-8"
?>
<
xmlns:mx
=layout
="vertical"
xmlns:local
="*"
>
<
mx:script
>
protected function handlealarm( event:event ):void
...
else
...
} ]]>
mx:script
>
<
mx:button
label
="觸發事件"
click
="mycomp.triggeralarm();"
/>
<
mx:checkboxid=
"preventtoggle"
label
="禁止預設行為?"
selected
="true"
/>
<
local:mycomponentid=
"mycomp"
alarm
="handlealarm( event );"
/>
>
Flex4 建立可被取消的預設事件處理器
預設事件處理器用於在元件內部對某些事件進行預設動作相應,這在很多元件裡面都是很普 遍的。這樣元件可以觸發某些事件,預設對觸發的事件進行處理,比如在可關閉的titlewindow 視窗中,我們單擊頂部的關閉按鈕,titlewindow內部的預設關閉事件處理器對該事件進行響應,執行關閉當前視窗的操作。這...
js 預設事件取消
子類的事件會會發父類相同型別的事件,w3c 標準window.event.stoppropagation也是事件物件 event 的乙個方法,作用是阻止目標元素的冒泡事件,但是會不阻止預設行為。ie則是使用window.event.cancelbubble true 2.阻止預設事件 a標籤的跳轉,...
取消滑鼠右鍵預設事件contextmenu
想要web頁面充分展示自身特色,修改瀏覽器預設的右鍵事件必不可少。右鍵單擊網頁,總是彈出另存為 審查元素 檢視網頁源 等等之類的選單。就我看來這是挺影響體驗的。像右鍵這麼重要的位置,必須充分利用。調整頁面鏈結之類等等的需求都是可以的。如何實現這個需求?利用瀏覽器contextmenu事件。支援con...