通常,当我们制造移动效果时.当你正在拖动一个对象时,鼠标脱离了当前窗口.并且在窗口之外放开了鼠标,再回到窗口当中.会发现,当鼠标移动时.之前拖动的那个对象还在继续移动.
这是因为被移动的元素不知道你在窗口外面已经放下了鼠标.所以依然处于可以移动状态的缘故.
那有好的解决办法吗?答案是肯定的:用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层的事件就被绑定到整个文档对象上去了.这时,你会发现你所托动的层可以不受限制的到处拖动.
你可以尝试着把窗口缩小成屏幕的一半,当你按下鼠标,开始拖动这个层时.当你的鼠标一起移动到窗口以外的区域,层依然在你的控制下在移动着.
---------------------------------------------------------------------
(原创)
分享到:
相关推荐
对 sda1 的存储容量进行扩展,删除除 sda1 以外的磁盘分区,将 sda1 扩展到最大。然后关闭系统,然后在 boot 启动,将启动方式的顺序设置成那样重启 ubuntu 系统。 显示扩展后的磁盘容量 在 ubuntu 下显示扩展后的...
- 如果要关闭除当前窗口以外的所有窗口,可以使用`:only`命令。 #### 四、窗口大小调整 - `:split`命令可接受行数前缀,来设置新窗口的高度,如`:3split`会创建一个高度为3行的窗口。 - 对于已打开的窗口,可以...
Popup窗口通常被用作一种轻量级的通知方式,它可以快速地向用户显示信息,并在一段时间后自动消失,或者在用户与之交互后关闭。在C#中,Popup控件是Windows Forms或WPF框架的一部分,但这个自定义控件可能添加了额外...
这是一个谷歌浏览器扩展,当配置文件中的所有窗口都关闭时,它会删除浏览器数据。 它最适合用于专门为 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站点。
4. **坐标转换**:可能需要将屏幕坐标转换为窗口坐标,以便正确计算窗口的新位置。 5. **边界检查**:确保窗口移动后不会超出屏幕范围。 学习这个源码,开发者不仅可以掌握易语言中窗口和鼠标事件的处理,还能深入...
21、如何单击除了窗口标题栏以外的区域使窗口移动 43 22、如何改变视窗的背景颜色 43 23、如何改变窗口标题 44 24、如何防止主框窗口在其说明中显示活动的文档名 44 25、如何获取有关窗口正在处理的当前消息的信息 ...
21、如何单击除了窗口标题栏以外的区域使窗口移动 43 22、如何改变视窗的背景颜色 43 23、如何改变窗口标题 44 24、如何防止主框窗口在其说明中显示活动的文档名 44 25、如何获取有关窗口正在处理的当前消息的信息 ...
函数调用的第一个参数是产生信号的widget组件(即按钮等窗口构件),而name则是希望捕获的信号或事件的名称,callback_func则是事件发生后所调用的回调函数名称,而第四个参数func_data则是传递给回调函数的参数。...
此扩展可以切换当前活动选项卡,当前窗口中的选项卡,其他窗口中的选项卡以及活动窗口以外的所有选项卡的静音。 您可以从工具栏弹出窗口访问扩展程序的控件,也可以通过定义自定义键盘快捷键来访问扩展程序的控件。 ...
WS_CLIPCHILDREN风格是一个窗口风格标志,当设置此风格时,窗口将剪切其子窗口区域以外的所有绘图操作,以防止子窗口绘制到父窗口的其他部分。在三态位图按钮的实现中,如果这个风格被错误地应用或者处理不当,可能...
// 将返回值设为HTCAPTION以外的值,阻止拖动 m.Result = (IntPtr)1; // HTCLIENT 或者 HTBODY 都可以 } else { base.WndProc(ref m); } } } ``` 在这个示例中,当WM_NCHITTEST消息到达时,我们改变了它的...
可以考虑将每个运算类型(如加法、减法等)封装为单独的函数,这样代码更易读,也方便后期维护和扩展。 7. **用户交互**:为了提升用户体验,我们可以考虑添加一些额外的功能,比如清除输入、查看历史记录、复制...
当鼠标远离屏幕边缘时(如距离边缘250像素以外),触发窗口隐藏。 3. **解决窗体大小改变时的高度自动调整问题**: - 为了确保窗口的高度始终与主窗口保持一致,我们还需要监听窗口的`resize`事件,并在窗口尺寸...
01022将Excel移动到屏幕以外 01023隐藏Excel 01024改变Excel的标题文字 01025删除Excel的标题文字 01026将Excel设置为全屏显示 01027在状态栏中显示信息 01028显示、隐藏状态栏 01029显示、隐藏编辑栏 01030显示、...