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 ...
随机推荐
- java输出格式-----System.out.printf()
package com.lzc.test; public class Main { public static void main(String[] args) { // 定义一些变量,用来格式化输出 ...
- 点击时出现某个样式,1s后移除该样式的案例效果
这里为了使效果更好的让用户体现出来,点击时添加的样式为background:yellow;1后移除该样式: 案例demo为: <!DOCTYPE html> <html lang=& ...
- Mac下R语言环境搭建
Mac下R语言环境搭建 博主在数据分析的时候一直用的python(MATLAB太重了),最近跟其他搞学术的人合作,需要用一下R语言,所以也打算顺便学习一下R. R语言简介 R语言是用于统计分析,图形表 ...
- sqlserver数据类型转换
Insert into [Cet.4] Select CONVERT(VARCHAR(20),CONVERT(DECIMAL(20,7),F1)) FROM Sheet1$ 我从外部导入了一个学号表, ...
- 学习 IOC 设计模式前必读:依赖注入的三种实现
一直以来就是越难的东西越值钱! 嘿嘿,这篇博文章转载自:http://www.cnblogs.com/liuhaorain/p/3747470.html 摘要 面向对象设计(OOD)有助于我们开发出高 ...
- Mybatis批量插入返回自增主键(转)
我们都知道Mybatis在插入单条数据的时候有两种方式返回自增主键: 1.对于支持生成自增主键的数据库:useGenerateKeys和keyProperty. 2.不支持生成自增主键的数据库:< ...
- 经典SQL面试题(转)
以下题目都在MySQL上测试可行,有疏漏或有更优化的解决方法的话欢迎大家提出,我会持续更新的:) 有三个表,如果学生缺考,那么在成绩表中就不存在这个学生的这门课程成绩的记录,写一段SQL语句,检索出每 ...
- elastic-job详解(三):Job的手动触发功能
elastic-job的任务都是使用quartz来触发的,quartz表达式一般都是定期执行.但有时候一些周期较长的任务,比如一天一次,几小时一次的任务,我们需要等待很久才能触发一次.如果我们需要测试 ...
- JS_高程4.变量,作用域和内存问题(3)垃圾收集
JavaScript的自动垃圾收集机制 执行环境会负责管理代码执行过程中使用的内存,编写JavaScript程序时,所需内存的分配以及无用内存的回收完全实现自动管理. 原理: 找出那些不再继续使用的变 ...
- vim查找格式
使用了VIM这么久,却一直无法牢记一些基本的操作指令.今天查找一个关键字时,想不起来怎么查找“下一个”,于是google之并解决,顺便把有用的都贴过来罢. 查找指令:/xxx 往下查找?xxx 往上 ...