Dojo   发布时间:2022-04-21  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Dojo学习大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

Dojo学习笔记(8. dojo.event & dojo.event.topic & dojo.event.browser)

模块:dojo.event

终于进入有名的dojo事件处理系统的学习了,学习前建议读者先去补习一下AOP的相关知识

dojo.event.connect

绑定指定的方法到指定的对象的方法

Usage Example:

简单绑定1

function doOnClick1()
{
alert("Clicked!");
}
dojo.event.connect(dojo.byId("inputTest"),"onclick","doOnClick1");

简单绑定2

obj = { doOnClick2: function(){ alert("Clicked!");}}
dojo.event.connect(dojo.byId("inputTest"),obj,"doOnClick2");

如果存在需要进行多个事件的绑定的时候,你就会看到dojo的方便之处了

obj2 = { doOnClick2: function(){alert("Clicked!");}}
dojo.event.connect(dojo.byId("inputTest"),"doOnClick2");
dojo.event.connect(dojo.byId("inputTest"),obj2,"doOnClick2");

connect可以对任何对象的方法进行绑定,而不是只能针对DOM对象

dojo.event.connect(obj,"doOnclick2","doOnClick1"); //在调用obj.doOnclick2()后调用doOnClick1()


dojo.event.connectBefore

dojo.event.connect认是后绑定,connectBefore则是早绑定,绑定的方法将在指定方法前执行,用法与connect一致


dojo.event.connec@R_546_2301@und

Usage Example:

function aroundTest(invocation){
//此处可以增加代码,比如检查参数(invocation.args)
var result = invocation.proceed();
//此处可以增加代码,比如修改结果(result)
return result;
}
dojo.event.connec@R_546_2301@und(dojo.byId("inputTest"),"aroundTest");


dojo.event.connectOnce
说起这个函数,还真的是让我想了半天,直觉上我就把它想象成executeOnce,结果测试的结果让我差点想不通
connectOnce就是指保证只绑定一次,来避免重复绑定会导致的重复执行的问题


dojo.event.disconnect

解除绑定,调用参数与connect一致,即可解除之前的绑定操作


dojo.event.log

在执行指定对象的指定方法自动记录日志

Usage Example:

dojo.event.log(obj,"doOnClick");//当调用obj.doOnClick时记录下日志"DEBUG: ([object Object]).doOnClick : "

你也可以这样写

dojo.event.log({srcObj: obj,srcFunc: "doOnClick"});


dojo.event.kwConnect

kwConnect可以做到更加灵活的绑定,比如可以设置延迟执行绑定

Usage Example:

dojo.event.kwConnect({
srcObj: dojo.byId("inputTest"),
srcFunc: "onclick",
adviceObj: obj,
adviceFunc: "doOnclick2",

type: "before",//认为"after",可选: "before","around",注意:type是用来决定adviceFunc的行为的,如果为"around",则aroundFunc将失效
aroundObj: null,
aroundFunc: null,//如果指定了aroundFunc,则其将对adviceFunc进行拦截,但是当type为"around"时,则aroundFunc将不会执行
once: false,//认为false,允许重复绑定
delay: 3000,//延时3秒后执行adviceFunc
rate: 0,//这个从源代码没有看懂起什么作用
adviceMsg: false //这个从源代码没有看懂起什么作用
});


dojo.event.kwDisconnect

用来解除使用kwConnect指定的绑定


模块:dojo.event.topic

Topic机制与Advice机制都能够实现事件的绑定,但是显然,Topic更适合处理多重绑定。
发布主题,然后由用户@L_674_29@的机制就是一个典型的观察者模式

dojo.event.topic.registerPublisher

注册主题发布器

Usage Example:

dojo.event.topic.registerPublisher("myTopic","doOnClick2");


dojo.event.topic.subscribe

@L_674_29@主题

Usage Example:

dojo.event.topic.subscribe("myTopic","test"); //执行obj.doOnClick2()以后会自动执行test()


dojo.event.topic.unsubscribe

取消@L_674_29@主题

Usage Example:

dojo.event.topic.unsubscribe("myTopic","test");


dojo.event.topic.destroy

删除主题,此主题所有的@L_674_29@都将失效

Usage Example:

dojo.event.topic.destroy("myTopic");


模块:dojo.event.browser

dojo.event.browser.addListener

增加监听器

Usage Example:

function listener()
{
alert("ok");
}
dojo.event.browser.addListener(document,'mousedown',listener); //事件名称可以加上"on",也可以没有"on"
dojo.event.browser.addListener(document,'onmousedown',listener,truE); //capture为真表示不受上层元素的事件控制


dojo.event.browser.removeListener

清除监听器(这个方法似乎是无效的)


dojo.event.browser.callListener

调用监听器

Usage Example:

dojo.event.browser.callListener(listener,document);


dojo.event.browser.stopPropagation

阻止Event传播

Usage Example:

dojo.event.browser.stopPropagation();


dojo.event.browser.preventDefault

将当前事件的返回值设置为false

Usage Example:

dojo.event.browser.preventDefault();


dojo.event.browser.keys

键定义:
KEY_BACKSPACE: 8,
KEY_TAB: 9,
KEY_ENTER: 13,
KEY_SHIFT: 16,
KEY_CTRL: 17,
KEY_ALT: 18,
KEY_PAUSE: 19,
KEY_CAPS_LOCK: 20,
KEY_ESCAPE: 27,
KEY_SPACE: 32,
KEY_PAGE_UP: 33,
KEY_PAGE_DOWN: 34,
KEY_END: 35,
KEY_HOME: 36,
KEY_LEFT_ARROW: 37,
KEY_UP_ARROW: 38,
KEY_RIGHT_ARROW: 39,
KEY_DOWN_ARROW: 40,
KEY_INSERT: 45,
KEY_deletE: 46,
KEY_LEFT_WINDOW: 91,
KEY_RIGHT_WINDOW: 92,
KEY_SELECT: 93,
KEY_F1: 112,
KEY_F2: 113,
KEY_F3: 114,
KEY_F4: 115,
KEY_F5: 116,
KEY_F6: 117,
KEY_F7: 118,
KEY_F8: 119,
KEY_F9: 120,
KEY_F10: 121,
KEY_F11: 122,
KEY_F12: 123,
KEY_NUM_LOCK: 144,
KEY_SCROLL_LOCK: 145


dojo.event.browser.currentEvent

最近一次的Event,其属性包括

altKey//检查alt键的状态,当alt键按下时,值为 true
button//检查按下的鼠标键,0 没按键,1 按左键,2 按右键,3 按左右键,4 按中间键,5 按左键和中间键,6 按右键和中间键,7 按所有的键
//这个属性仅用于onmousedown,onmouseup,和 onmousemove 事件。对其他事件,不管鼠标状态如何,都返回 0(比如onclick)
clientX//返回鼠标在窗口客户区域中的X坐标
clientY//返回鼠标在窗口客户区域中的Y坐标
ctrlKey//检查ctrl键的状态,当ctrl键按下时,值为 true
fromElement//检测 onmouSEOver 和 onmouSEOut 事件发生时,鼠标所离开的元素
keyCode//检测键盘事件相对应的内码,仅当type为keydown,keyup,keypress时才有效
offsetX//检查相对于触发事件的对象,鼠标位置的水平坐标
offsetY//检查相对于触发事件的对象,鼠标位置的垂直坐标
propertyName//设置或返回元素的变化了的属性名称,你可以通过使用 onpropertychange 事件,得到 propertyName 的值
screenX//检测鼠标相对于用户屏幕的水平位置
screenY//检测鼠标相对于用户屏幕的垂直位置
shiftKey//检查shift键的状态,当shift键按下时,值为true
srcElement//返回触发事件的元素
srcFilter//返回触发 onfilterchange 事件的滤镜
toElement//检测 onmouSEOver 和 onmouSEOut 事件发生时,鼠标所进入的元素
type//返回没有“on”作为前缀的事件名,比如Click,mousedown
x//返回鼠标相对于css属性中有position属性的上级元素的x轴坐标。如果没有css属性中有position属性的上级元素,认以BODY元素作为参对象
y//返回鼠标相对于css属性中有position属性的上级元素的y轴坐标。如果没有css属性中有position属性的上级元素,认以BODY元素作为参对象
target//同srcElement
currentTarget
layerX//同offsetX
layerY//同offsetY
pageX//无水平滚动条的情况下与clientX同
pageY//无水平滚动条的情况下与clientY同
relatedTarget// 仅当type为mouSEOver,mouSEOut时才有效
keys//与dojo.event.browser.keys相同,仅当type为keydown,keypress时才有效
charCode//键值,仅当type为keypress时才有效


dojo.event.browser.isEvent

判断指定对象是否为event对象

Usage Example:

dojo.event.browser.isEvent(dojo.event.browser.currentEvent); //当dojo.event.browser.currentEvent不为null时返回true

大佬总结

以上是大佬教程为你收集整理的Dojo学习全部内容,希望文章能够帮你解决Dojo学习所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:dojo学习