通常,当我们制造移动效果时.当你正在拖动一个对象时,鼠标脱离了当前窗口.并且在窗口之外放开了鼠标,再回到窗口当中.会发现,当鼠标移动时.之前拖动的那个对象还在继续移动.
这是因为被移动的元素不知道你在窗口外面已经放下了鼠标.所以依然处于可以移动状态的缘故.
那有好的解决办法吗?答案是肯定的:用setCapture()方法.
setCapture():将某个方法的事件绑定到整个文档.
它的用法在DHTML手册里面都有记载:
object.setCapture();
相应的,object.releaseCapture()用于将object所绑定的事件释放掉
其中,object为要将事件绑定到文档的对象.
例如:
<div id="test" style="position:absolute;width:200;height:300;background-color:red">
我要被移动
</div>
<script>
//**//ham//**//
function $(id){return document.getElementById(id);}
window.onload=function(){
$(test).onmousedown=MouseDown;
$(test).onmousemove=MouseMove;
$(test).onmouseup=MouseUp;
}
var canMove=false;
function MouseDown(){
//在鼠标按下时,将$(test)的事件绑定到整个文档
$(test).setCapture()
canMove=true;
...
...
}
function MouseMove(){
if(canMove){
//移动层
...
...
}
}
function MouseUp(){
//鼠标放开之后,将$(test)所绑定的事件释放.
$(test).releaseCapture();
canMove=true;
...
...
}
</script>
这样,当你在id为test的层上按下鼠标时,test层的事件就被绑定到整个文档对象上去了.这时,你会发现你所托动的层可以不受限制的到处拖动.
你可以尝试着把窗口缩小成屏幕的一半,当你按下鼠标,开始拖动这个层时.当你的鼠标一起移动到窗口以外的区域,层依然在你的控制下在移动着.
---------------------------------------------------------------------
(原创)
分享到:
相关推荐
这是一个谷歌浏览器扩展,当配置文件中的所有窗口都关闭时,它会删除浏览器数据。 它最适合用于专门为 Web 开发创建的配置文件。 它是为响应创建的:在隐身模式下忽略/重置 devtools 设置 执照 您可以使用此扩展...
了解用 M F C来做什么涉及到对4个基本概念的理解:Windows API...除了这些概念以外,本部分将讨论一下工具栏和状态栏。最后我们将讨论一下 M F C如何同非Wi n d o w s构件进行通信,如串行口和I n t e r n e t站点。
SendMessage 向指写窗口发送指定消息 PostMessage 将消息投递到指定句柄的消息队列 ShowWindow 显示指定窗口 ShowWindowAsync 显示指定窗口 SetWindowLong 设置窗口的扩展样式 SetLayeredWindowAttributes...
窗口事件 ............................................................................................................................................... 24 窗口类概览 ....................................
无论读者是否已经读过本系列的书籍,或者已经具备了多年的编程...除了这些概念以外,本部分还 将讨论一下工具栏和状态栏。最后我们将讨论一下M F C如何同非Wi n d o w s构件进行通信,如 串行口和I n t e r n e t站点。
21、如何单击除了窗口标题栏以外的区域使窗口移动 43 22、如何改变视窗的背景颜色 43 23、如何改变窗口标题 44 24、如何防止主框窗口在其说明中显示活动的文档名 44 25、如何获取有关窗口正在处理的当前消息的信息 ...
21、如何单击除了窗口标题栏以外的区域使窗口移动 43 22、如何改变视窗的背景颜色 43 23、如何改变窗口标题 44 24、如何防止主框窗口在其说明中显示活动的文档名 44 25、如何获取有关窗口正在处理的当前消息的信息 ...
函数调用的第一个参数是产生信号的widget组件(即按钮等窗口构件),而name则是希望捕获的信号或事件的名称,callback_func则是事件发生后所调用的回调函数名称,而第四个参数func_data则是传递给回调函数的参数。...
此扩展可以切换当前活动选项卡,当前窗口中的选项卡,其他窗口中的选项卡以及活动窗口以外的所有选项卡的静音。 您可以从工具栏弹出窗口访问扩展程序的控件,也可以通过定义自定义键盘快捷键来访问扩展程序的控件。 ...
01022将Excel移动到屏幕以外 01023隐藏Excel 01024改变Excel的标题文字 01025删除Excel的标题文字 01026将Excel设置为全屏显示 01027在状态栏中显示信息 01028显示、隐藏状态栏 01029显示、隐藏编辑栏 01030显示、...
Chrome-Tab-Saver Tab Saver是一个Chrome扩展程序,用于保存您的... 您可以将其与基本弹出窗口一起使用。 您的数据不会存储在计算机以外的任何位置。 它是纯净的,安全的和有用的。 您可以通过链接进行设置和使用。
格式1关闭除"命令窗口","调试窗口","跟踪窗口"及"帮助窗口"以外的所有内容. (2).格式2关闭当前数据库.数据库关闭后,与此数据库相关的东西同时关闭.若没有数据库,则该命令关闭所有工作区中打开的自由表及与此表...
打算将wagtail-generic-chooser扩展到涵盖Wagtail内置wagtail-generic-chooser所有功能,例如内联对象创建表单,然后将其合并到Wagtail中,作为这些内置选择器的新基础实现-这将减少代码重复,并大大简化构建新管理...
(17) 如何单击除了窗口标题栏以外的区域使窗口移动 12 (18) 如何改变视窗的背景颜色 14 (19) 如何改变窗口标题 15 (20) 如何防止主框窗口在其说明中显示活动的文档名 17 (21) 如何获取有关窗口正在处理的...
或为每个选择选项显示一个整洁的弹出窗口。 为什么要创建另一个工具? 学习。 这是我的第一个 chrome 扩展,所以它的唯一目的是构建一个具有自定义功能的工具,以满足我的浏览需求,并牢记一个理念 - 边做边学。 ...
该扩展名将清除浏览器中除活动选项卡以外的所有内容。 您想轻松清理许多打开的标签吗? 需要快速关闭打开的标签并将它们轻松地恢复生命吗? 通过“清除标签页”,您可以快速关闭Chrome中所有打开的标签页,但当前...
语言:English,русский...只需单击扩展名图标或按Ctrl + Shift + Y,其他选项卡将关闭。 您可以在设置中禁用烦人的确认弹出窗口。 您可以在扩展程序热键设置中更改快捷键组合:chrome:// extensions / shortcuts
1.3.1 字符模式 1.3.2 Windows对应程序 1.3.3 头文件 1.3.4 程序入口 1.3.5 MessageBox函数 1.3.6 编译、链接及运行 第2章Unicode简介 2.1 字符集简史 2.1.1 美国标准 2.1.2 美国以外的世界 2.1.3 扩展ASCII 2.1.4 ...
一旦执行该命令,它将关闭除当前选项卡以外的所有发出声音的选项卡,再次执行该命令,它将关闭当前选项卡(如果正在发出声音)。 如果您正在观看某物,并且想要关闭所有其他发出声音的选项卡(这是您正在观看的东西...