转行学开发,代码100天——2018-05-02

1.事件对象

JavaScript中事件对象通常用定义变量ev或event表示。为了兼顾浏览器兼容问题,定义事件对象为

var oEvent = ev||event;

2.鼠标事件

鼠标事件通常有获取鼠标点击位置clientX;clientY

鼠标移动事件:onmousemove;

鼠标点击事件:onmousedown;

鼠标抬起事件:onmouseup;

如设置一个鼠标跟随程序:

物体跟随鼠标移动。

<!DOCTYPE html>
<html>
<head>
<title>javascript 鼠标事件</title>
<style type="text/css">
#div1{width: 100px;height: 100px;background: red;position: absolute;}
</style>
<script type="text/javascript">
document.onmousemove = function(ev)
{
var oEvent = ev||event;
var oDiv = document.getElementById("div1");
var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
oDiv.style.left = oEvent.clientX+"px";
oDiv.style.top = oEvent.clientY+scrollTop+"px";
}
</script>

</head>
<body style="height: 2000px;">
<div id="div1"></div>
</body>
</html>

注意:在使用clientX和clientY时一定要结合scrollLeft和scrollTop一起使用。

在这里可以试着去封装一个获取鼠标坐标的函数。

//鼠标坐标值获取
function getPos(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.事件冒泡

事件冒泡通常会影响网页运行效果,一般需要设置阻止事件冒泡的发生。

如一个模仿select按钮的效果,通过点击按钮,弹出内容框;点击视图中其他区域,内容框消失。

其代码如下:

<!DOCTYPE html>
<html>
<head>
<title>仿select效果</title>
<style type="text/css">
#div1{width: 200px; height: 200px;background: #ccc;display: none;}
</style>
<script type="text/javascript">
window.onload = function()
{
var btn1 = document.getElementById("btn1");
var div1 = document.getElementById("div1"); btn1.onclick = function(ev)
{
var oEvent = ev||event;
div1.style.display = "block";
alert("按钮被点击了");
oEvent.cancelBubble = true; }
document.onclick = function()
{
div1.style.display = "none";
alert("document被点击了");
}
}
</script>
</head>
<body> <input id="btn1" type="button" value="显示" >
<div id="div1"></div>
</body>
</html>

可以看到,代码中对按钮添加了阻止冒泡的功能,oEvent.cancelBubble = true;

否则在点击显示按钮后,先后弹出

"按钮被点击了"
"document被点击了"
但实际上内容灰色框并不会显示。 所以在事件的使用中至少需要注意以下问题: 1)兼容性问题
2)事件冒泡问题
												

最新文章

  1. screen
  2. php各种编码集详解和以及在什么情况下进行使用
  3. 注解:【无连接表的】Hibernate单向N-&gt;1关联
  4. 叠罗汉III之推箱子
  5. js中eval函数
  6. android——混淆打包
  7. Delphi用ADOquery主从表例子(转总结)
  8. map map
  9. 【Beta】 第五次Daily Scrum Meeting
  10. onCreate和onStart谁的开销大?
  11. 安装selenium
  12. Javascript高级编程学习笔记(65)—— 事件(9)复合事件
  13. 使用WinIo32绕过密码控件实现自动登录
  14. 扫描系统进程和获取某进程的PID
  15. shiro自定义realm认证(五)
  16. 温馨小程序前端布局Flex
  17. Spring学习四
  18. Spring Cloud搭建手册(2)——Spring Cloud Config
  19. [py]函数中yield多次返回,延迟计算特性-杨辉三角
  20. List、Set、Map

热门文章

  1. 重写select
  2. 剑指offer-python-回溯法-矩阵中的路径
  3. Mysql数据库在建表时指定engine等于InnoDB 或MyISAM的意义
  4. Ajax加载数据后百度分享实例
  5. mailto - 简单多媒体邮件发送程序
  6. pythonr-内置函数
  7. 【学习】020 Redis
  8. php内置函数分析之array_change_key_case()
  9. pyqt5-QPlainTextEdit普通文本
  10. Postman—cookie