Event constants for Javascript?(Javascript的事件常量?)
问题描述
在Javascript中,我有如下代码:
document.addEventListener("mousedown", mouseDownHandler);
偶尔我可能会手指发胖,比如:
document.addEventListener("mouzedown", mouseDownHandler);
而且Javascript不会识别我是个白痴,我会弄糊涂为什么我的处理程序不工作。
Actionscript3
如下指定事件常量:
MouseEvent.MOUSE_DOWN // equiv to the String "mouseDown"
如果我对variable
或constant
指手画脚,那么JS就会生我的气,我就能很快解决这个问题。JavaScript是否有类似于此的内容,或者我是否需要为事件类型创建自己的JS伪常量?
推荐答案
没有为您执行此操作的内置功能。
您可以创建自己的事件列表:
var EventNames = {
MOUSE_DOWN : "mousedown",
MOUSE_UP : "mouseup",
CLICK : "click",
// etc
};
但这并不能防止您输入错误,因为那样EventNames.MOUZE_DOWN
只会给您undefined
(addEventListener()
可能会接受,但-显然-不会做您想做的事)。
您可以创建一系列单独的全局变量,然后如果您在"常量"名称上输入错误(并且您的IDE或LINT产品可能会为您检测到输入错误),浏览器就会给出错误:
var Event_MOUSE_DOWN = "mousedown",
Event_MOUSE_UP = "mouseup",
// etc
但是,当然,"全球是邪恶的"大队的成员们仅仅读了上面的话就已经开始口吐白沫了。您可以在没有全局变量的情况下通过将所有代码(包括那些"常量")包装在一个立即执行的大型匿名函数中来完成上述操作,或者您也可以这样做:
// YNH: "Your Namespace Here" (insert your own namespacing
// code as desired)
var YNH_Events = {
validEvents : ["mouseup","mousedown","click","etc"],
bindEvent = function(element, eventType, handler, isCustomEvent) {
if (!isCustomEvent && -1 === this.validEvents.indexOf(eventType))
throw "Invalid event type requested: " + eventType;
if (element.addEventListener)
element.addEventListener(eventType, handler, false);
else if (element.attachEvent)
element.attachEvent("on" + eventType, handler);
else
element["on" + eventType] = handler;
}
}
YNH_Events.bindEvent(someElement, "mousedown", function() { }); // OK
YNH_Events.bindEvent(someElement, "customevent", function() { }, true); // OK
YNH_Events.bindEvent(someElement, "mouzedown", function() { }); // Error!
当然,有关使用Array.indexOf()
的常见警告也适用,即在较旧的浏览器中不受支持,但您可以按照MDN、诸如此类的说明进行填补。
或者您可以像jQuery一样定义您自己的.mousedown()
、.click()
等方法,并且只通过这些方法附加事件-如果您输入了错误的方法名称,您肯定会收到错误。
这篇关于Javascript的事件常量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Javascript的事件常量?


- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01