理解JavaScript中的事件 Event(2)
作者:136com 来源:蓝色理想 发布时间:2008-03-19 11:16:00
标签:事件,Event,ie,DOM,javascript
二、 IE中拖动DOM元素的例子
/*
该函数由mousedown事件处理调用
它为随后发生的mousemove和mouseup事件注册了临时的捕捉事件处理程序
并用这些事件处理程序拖动指定的文档元素
第二个参数必须是mousedown事件的事件对象
*/
function beginDrag(elementToDrag,event)
{
//该元素当前位于何处
//该元素的样式性质必须具有left和top CSS属性
//此外,我们假定他们用象素做单位
//var x=parseInt(elementToDrag.style.left);
//var y=parseInt(elementToDrag.style.top);
//计算一个点和鼠标点击之间的距离,下面的嵌套的moveHandler函数需要这些值
var deltaX=event.clientX-parseInt(elementToDrag.style.left);
var deltaY=event.clientY-parseInt(elementToDrag.style.top);
// 注册mousedown事件后发生的mousemove和mouseup事件的处理程序
// 注意,它们被注册为文档的捕捉事件处理程序
// 在鼠标按钮保持按下的状态的时候,这些事件处理程序保持活动的状态
// 在按钮被释放的时候,它们被删除
document.attachEvent("onmousemove",moveHandler);
document.attachEvent("onmouseup",upHandler);
//我们已经处理了该事件,不要让别的元素看到它
event.cancelBubble=true;
event.returnValue=false;
/*
这是在元素被拖动时候捕捉mousemove事件的处理程序,它响应移动的元素
*/
function moveHandler(e)
{
//把元素移动到当前的鼠标位置
e=window.event;
elementToDrag.style.left=(event.clientX-deltaX)+"px";
elementToDrag.style.top=(event.clientY-deltaY)+"px";
//不要让别的元素看到该事件
event.cancelBubble=true;
}
/*
该事件将捕捉拖动结束的时候发生的mouseup事件
*/
function upHandler(e)
{
//注销事件处理程序
document.detachEvent("onmouseup",upHandler);
document.detachEvent("onmousemove",moveHandler);}
event.cancelBubble=true;
}
调用它的HTML文件代码:
<html>
<head>
<title>Untitled Page</title>
<script type="text/javascript" src="dragIE.js"></script>
</head>
<body>
<div style="position:absolute;left:100px;top:100px;background-color:White;border:solid black;">
<div style="background-color:Gray;border-bottom:solid black;padding:3px;font-family:Sans-Serif;font-weight:bold;" >
拖动我
</div>
<div>
<p>This is a test.Testing,testing</p></div>
</div>
</body>


猜你喜欢
- 写在之前围绕类的话题,说是说不完的,仅在特殊方法,除了我们在前面遇到过的 __init__(),__new__(),__str__() 等之
- ECMAScript 5.1规范§15.4.4.4 中说到:concat函数是有意设计成通用的;它并不要求它的this值必须得是个Array
- 默认级别:warningimport logginglogging.debug('debug message')loggin
- 1.语音信号的产生与特性我们要对语音进行分析,首先要提取能够表示该语音的特征参数,有了特征参数才可能利用这些参数进行有效的处理,在对语音信号
- 有个简单的查看方法,打开记事本,如要查看“Chr("119") w”,可以按下Alt+119 (先按住Alt不放,然后输
- 简介这里通过python的绘图工具Matplotlib包可视化实现机器学习中的KNN算法。 需要提前安装python的Numpy和Matpl
- 前言在一个分布式环境中,每台机器上可能需要启动和停止多个进程,使用命令行方式一个一个手动启动和停止非常麻烦,而且查看每个进程的状态也很不方便
- 废话还是说太多了 直接上代码import randomimport sys# 牌面列表card_code = ['A', &
- python结构体数组在C语言中我们可以通过struct关键字定义结构类型,结构中的字段占据连续的内存空间,每个结构体占用的内存大小都相同,
- 操作系统上正确配置python环境之后,pyuic5也是一个可以识别的命令行指令到.ui文件的目录下,直接cmd进入,输入pyuic5 -o
- REPLACE语法REPLACE(String,from_str,to_str)即:将String中所有出现的from_str替换为to_s
- 一、定义集合中的元素是无序的、唯一的、不可变的类型。集合是一个特殊的列表,可以对数据去重。lists = [1,3,5,7,3,4,6,2,
- 起源就在今年9月份,我负责的部门平台项目发布了一个新版本,该版本同时上线了一个新功能,简单说有点类似定时任务。头一天一切正常,但第二天出现了
- 一、动机(Motivate)“观察者模式”在现实生活中,实例其实是很多的,比如:八九十年代我们订阅的
- 1、用户管理mysql的用户信息保存在了mysql.user中:select * from mysql.user\G************
- vue3官方文档 defineProps 和 defineEmits 都是只能在 <
- 本文实例讲述了php中debug_backtrace、debug_print_backtrace和匿名函数用法。分享给大家供大家参考。具体分
- 作为语言模型和文本挖掘中的常用工具,Word2Vec也可以用来构建聊天机器人。在本文中,我们将使用Python和Gensim库从头开始构建一
- 需要ocr识别,推荐一个Python免费的验证码识别-ddddocr安装过程:1、镜像安装:pip install ddddocr -i h
- #测试网址: http://localhost/blog/testurl.php?id=5 //获取域名或主机地址 echo $_SERVE