JavaScript:事件
1. 事件对象|事件冒泡
// 示例代码:[鼠标点击事件]的事件对象
var oBtn=document.getElementById('btn1'); // 按钮DOM
oBtn.onclick=function (ev) // 按钮DOM绑定点击事件
{
// 获取事件
var oEvent=ev||event; // 阻止事件冒泡
oEvent.cancelBubble=true;
oEvent.stopPropagation();
};
2. 鼠标事件
鼠标事件:由鼠标操作触发的事件.
比如:onclick,ondblclick,onmouseover,onmouseout,onmousedown,onmouseup,onmousemove
通过鼠标事件,可以获取鼠标的可视区位置,可用于类似拖拽之类的功能。
可视区位置:clientX、clientY
// 示例代码:
document.onmousemove=function (ev)
{
var oEvent=ev||event;
var oDiv=document.getElementById('div1'); // 要拖动的div var pos=getAbsolutePosition(oEvent); oDiv.style.left=pos.x+'px';
oDiv.style.top=pos.y+'px';
}; // 根据鼠标触发的事件,获取鼠标的[绝对位置]
function getAbsolutePosition(ev){
var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft; return {x: ev.clientX+scrollLeft, y: ev.clientY+scrollTop};
}
3. 键盘事件
键盘事件:由键盘操作触发的事件。
比如:onkeydown,onkeyup,onkeypress
通过键盘事件可以实现通过键盘按键进行提交、通过键盘按键控制物体移动等功能。
如果用于提交,一般绑定在要提交的输入框上。
如果用于控制物体的移动,可以绑定到document上。
常用属性:ctrlKey、shiftKey、altKey
// 示例代码:
// 获取键盘码
document.onkeydown = function (ev)
{
var oEvent=ev||event;
console.log(oEvent.keyCode); if(oEvent.keyCode==13 && oEvent.ctrlKey) // 同时按Ctrl+Enter
{
alert("您同时按下了Ctrl+Enter。");
}
}
4. 默认行为
// 示例代码1:
document.oncontextmenu = function(ev)
{ // .... 此处可实现自定义右键菜单 return false; // 阻止右键菜单
} // 示例代码2:
var oTxt=document.getElementById('txt1'); // 一个输入框
// 只允许输入数字和退格
oTxt.onkeydown=function (ev){
var oEvent=ev||event; if(oEvent.keyCode!=8 && (oEvent.keyCode<48 || oEvent.keyCode>57)){
return false;
}
};
5. 事件绑定
// 示例代码:
// 给一个元素添加两个click事件
document.onload = function()
{
var oBtn=document.getElementById('btn1'); myAddEvent(oBtn, 'click', function (){
alert('a');
}); myAddEvent(oBtn, 'click', function (){
alert('b');
});
} // 自定义事件绑定
function myAddEvent(obj, ev, fn){
if(obj.attachEvent){ // IE
obj.attachEvent('on'+ev, fn);
}
else{ // FF、CHROME
obj.addEventListener(ev, fn, false);
}
}
JavaScript:事件的更多相关文章
- JavaScript事件代理和委托(Delegation)
JavaScript事件代理 首先介绍一下JavaScript的事件代理.事件代理在JS世界中一个非常有用也很有趣的功能.当我们需要对很多元素添加事件的时候,可以通过将事件添加到它们的父节点而将事件委 ...
- JavaScript事件概览
JavaScript事件 JavaScript是单线程,在同一个时间点,不可能同时运行两个"控制线程". 事件句柄和事件对象 1.注册事件句柄 标准和非标准 var button= ...
- 【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)
前言 这篇博客有点长,如果你是高手请您读一读,能对其中的一些误点提出来,以免我误人子弟,并且帮助我提高 如果你是javascript菜鸟,建议您好好读一读,真的理解下来会有不一样的收获 在下才疏学浅, ...
- JavaScript 事件
事件 概念:事件是可以被 JavaScript 侦测到的行为. JavaScript 使我们有能力创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触 ...
- JavaScript事件详解-jQuery的事件实现(三)
正文 本文所涉及到的jQuery版本是3.1.1,可以在压缩包中找到event模块.该篇算是阅读笔记,jQuery代码太长.... Dean Edward的addEvent.js 相对于zepto的e ...
- JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】
正文 作者打字速度实在不咋地,源码部分就用图片代替了,都是截图,本文讲解的Zepto版本是1.2.0,在该版本中的event模块与1.1.6基本一致.此文的fastclick理解上在看过博客园各个大神 ...
- 总结JavaScript事件机制
JavaScript事件模型 在各种浏览器中存在三种事件模型: 原始事件模型 , DOM2事件模型 , IE事件模型. 其中原始的事件模型被所有浏览器所支持,而DOM2中所定义的事件模型目前被除了IE ...
- 解析Javascript事件冒泡机制
本资源引自: 解析Javascript事件冒泡机制 - 我的程序人生 - 博客频道 - CSDN.NET http://blog.csdn.net/luanlouis/article/details/ ...
- JavaScript事件流原理解析
一.为什么会有这一篇的文章 国庆前几天由于任务比较重,要赶在国庆前把一个进度的任务开发完成,所以也就有点赶,但是却遇到了一个比较奇怪的Bug,导致了任务比预计的延迟了几个小时,对此深表遗憾,所以利用国 ...
- Javascript事件机制兼容性解决方案
本文的解决方案可以用于Javascript native对象和宿主对象(dom元素),通过以下的方式来绑定和触发事件: 或者 var input = document.getElementsByTag ...
随机推荐
- Python中关于列表排序并保留id/enumerate()使用方法
新手才开始写博客,不周之处请原谅,有错误请指正. >>> a = [1,4,2,5,3]>>> b = sorted(enumerate(a),key = lamb ...
- poj3087 Shuffle'm Up(bfs)
http://poj.org/problem?id=3087 注意复制字符串的时候,要在末尾加上'\0',否则导致strcmp出错. 还有就是开数组大小的时候看清楚一点,别开错了debug了好久. # ...
- 阿里云CentOS 7无外网IP的ECS访问外网(配置网关服务器)
说明: 1.必须要有一台机器具有外网IP的ECS. 2.如果不想配置具有外网IP的ECS时,可以购买NAT网关,但需要钱,贵.下面会说明NAT网关的配置. 3.最后吐槽一下阿里云VPC网关导致不能按照 ...
- Redis连接出现Error: Connection reset by peer的问题是由于使用Redis的安全模式
现在网上一查出现安全模式的连接,基本都是要关闭服务端的操作,其实这种方式是不正确的,最有效的解决方式是使用stunnel进行安全模式的连接. 我碰到的问题是微软云(其实我不想用!)连接Redis,默认 ...
- ASP.NET WebApi 基于分布式Session方式实现Token签名认证
一.课程介绍 明人不说暗话,跟着阿笨一起学玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性.那么对于我们来说,如何确保数据的安全将会是需要思考的问题.在ASP.NETWebSer ...
- 前端工程化系列[04]-Grunt构建工具的使用进阶
在前端工程化系列[02]-Grunt构建工具的基本使用和前端工程化系列[03]-Grunt构建工具的运转机制这两篇文章中,我们对Grunt以及Grunt插件的使用已经有了初步的认识,并探讨了Grunt ...
- .Net转Java.08.format
%[index$][标识][最小宽度]转换方式 [index$]可以用于表示对第index个参数进行格式化, // Java代码 String s1=String.format("%3$s, ...
- iOS:UIButton扩大按钮的响应区域
一.介绍 在开发中有时会遇见设计图里按钮设计的特别小,这时会用到手动扩大UIButton的响应范围 二.方式 下面有两个解决办法: 第一种方法:创建一个类目:UIButton+EnlargeTouch ...
- [DevExpress使用随笔]之NavBarControl控件(一)【转】
https://blog.csdn.net/HXC_HUANG/article/details/78614092 NavBarControl是具有可扩展组的侧导航控件.一.在Winform窗口中拖入N ...
- [Python设计模式] 第21章 计划生育——单例模式
github地址:https://github.com/cheesezh/python_design_patterns 单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式 ...