1. 事件对象|事件冒泡

    // 示例代码:[鼠标点击事件]的事件对象
var oBtn=document.getElementById('btn1'); // 按钮DOM
oBtn.onclick=function (ev) // 按钮DOM绑定点击事件
{
// 获取事件
var oEvent=ev||event; // 阻止事件冒泡
oEvent.cancelBubble=true;
     oEvent.stopPropagation();
};

2. 鼠标事件

鼠标事件:由鼠标操作触发的事件.
比如:onclickondblclickonmouseoveronmouseoutonmousedownonmouseuponmousemove

通过鼠标事件,可以获取鼠标的可视区位置,可用于类似拖拽之类的功能。
可视区位置:clientXclientY

    // 示例代码:
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. 键盘事件

键盘事件:由键盘操作触发的事件。
比如:onkeydownonkeyuponkeypress

通过键盘事件可以实现通过键盘按键进行提交、通过键盘按键控制物体移动等功能。
如果用于提交,一般绑定在要提交的输入框上。
如果用于控制物体的移动,可以绑定到document上。

常用属性:ctrlKeyshiftKeyaltKey

    // 示例代码:
// 获取键盘码
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:事件的更多相关文章

  1. JavaScript事件代理和委托(Delegation)

    JavaScript事件代理 首先介绍一下JavaScript的事件代理.事件代理在JS世界中一个非常有用也很有趣的功能.当我们需要对很多元素添加事件的时候,可以通过将事件添加到它们的父节点而将事件委 ...

  2. JavaScript事件概览

    JavaScript事件 JavaScript是单线程,在同一个时间点,不可能同时运行两个"控制线程". 事件句柄和事件对象 1.注册事件句柄 标准和非标准 var button= ...

  3. 【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)

    前言 这篇博客有点长,如果你是高手请您读一读,能对其中的一些误点提出来,以免我误人子弟,并且帮助我提高 如果你是javascript菜鸟,建议您好好读一读,真的理解下来会有不一样的收获 在下才疏学浅, ...

  4. JavaScript 事件

    事件 概念:事件是可以被 JavaScript 侦测到的行为. JavaScript 使我们有能力创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触 ...

  5. JavaScript事件详解-jQuery的事件实现(三)

    正文 本文所涉及到的jQuery版本是3.1.1,可以在压缩包中找到event模块.该篇算是阅读笔记,jQuery代码太长.... Dean Edward的addEvent.js 相对于zepto的e ...

  6. JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】

    正文 作者打字速度实在不咋地,源码部分就用图片代替了,都是截图,本文讲解的Zepto版本是1.2.0,在该版本中的event模块与1.1.6基本一致.此文的fastclick理解上在看过博客园各个大神 ...

  7. 总结JavaScript事件机制

    JavaScript事件模型 在各种浏览器中存在三种事件模型: 原始事件模型 , DOM2事件模型 , IE事件模型. 其中原始的事件模型被所有浏览器所支持,而DOM2中所定义的事件模型目前被除了IE ...

  8. 解析Javascript事件冒泡机制

    本资源引自: 解析Javascript事件冒泡机制 - 我的程序人生 - 博客频道 - CSDN.NET http://blog.csdn.net/luanlouis/article/details/ ...

  9. JavaScript事件流原理解析

    一.为什么会有这一篇的文章 国庆前几天由于任务比较重,要赶在国庆前把一个进度的任务开发完成,所以也就有点赶,但是却遇到了一个比较奇怪的Bug,导致了任务比预计的延迟了几个小时,对此深表遗憾,所以利用国 ...

  10. Javascript事件机制兼容性解决方案

    本文的解决方案可以用于Javascript native对象和宿主对象(dom元素),通过以下的方式来绑定和触发事件: 或者 var input = document.getElementsByTag ...

随机推荐

  1. 用python实现ARP欺骗

    首先介绍一个python第三方库--Scapy,这个库不是标准库,默认是没有的,需要安装,不过在kali-linux里边是默认安装的, 这里我用kali做攻击者,xp做受害者 关于Scapy Scap ...

  2. Pycharm安装pygame游戏库遇到的问题

    正常情况下: 点file-settings-project-project interprter 点右上角的+号,搜索pygame 点击下方 install Package即可 成功 第二种,如果提示 ...

  3. Disruptor 详解

    想了解一个项目,最好的办法就是,把它的源码搞到本地自己捣鼓. 在网上看了 N 多人对 Disruptor 速度的吹捧,M 多人对它的机制分析,就连 Disruptor 官方文档中,也 NB 哄哄自诩: ...

  4. Spring Aop——给Advice传递参数

    给Advice传递参数 Advice除了可以接收JoinPoint(非Around Advice)或ProceedingJoinPoint(Around Advice)参数外,还可以直接接收与切入点方 ...

  5. Jetpack 架构组件 Paging 分页加载 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  6. commit 冲突

    git status or repo sync . 时看到如下的提示: error: packages/apps/app/: branch alpha is published (but not me ...

  7. 【JVM】垃圾收集器

    程序计数器.Java虚拟机栈.本地方法栈分配的内存是确定的,生命周期与线程同样.所以不须要过多考虑回收问题. 而Java堆和方法区仅仅有运行时才知道有哪些对象被创建,须要多少内存,这部分的内存分配和回 ...

  8. Centos7中ss命令安装

    一.简述 一般Centos会自带ss这个命令,如果没带,则需要安装. 二.安装命令 yum install iproute

  9. CentOS7 安装FastDFS分布式文件系统

    CentOS7 安装FastDFS分布式文件系统 最近要用到fastDFS,所以自己研究了一下,在搭建FastDFS的过程中遇到过很多的问题,为了能帮忙到以后搭建FastDFS的同学,少走弯路,与大家 ...

  10. NOIP2012 普及组 寻宝

    题目描述 Description 传说很遥远的藏宝楼顶层藏着诱人的宝藏.小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书.说明书的内容如下: 藏宝楼共 ...