`
ham
  • 浏览: 80070 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

将事件扩展向窗口以外

阅读更多
通常,当我们制造移动效果时.当你正在拖动一个对象时,鼠标脱离了当前窗口.并且在窗口之外放开了鼠标,再回到窗口当中.会发现,当鼠标移动时.之前拖动的那个对象还在继续移动.
这是因为被移动的元素不知道你在窗口外面已经放下了鼠标.所以依然处于可以移动状态的缘故.

那有好的解决办法吗?答案是肯定的:用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层的事件就被绑定到整个文档对象上去了.这时,你会发现你所托动的层可以不受限制的到处拖动.
你可以尝试着把窗口缩小成屏幕的一半,当你按下鼠标,开始拖动这个层时.当你的鼠标一起移动到窗口以外的区域,层依然在你的控制下在移动着.
---------------------------------------------------------------------
(原创)
分享到:
评论
1 楼 doltter 2008-06-04  
好文章。。。

相关推荐

    Developer-Profile:当配置文件中的所有窗口都关闭时删除浏览器数据的 Google Chrome 扩展程序

    这是一个谷歌浏览器扩展,当配置文件中的所有窗口都关闭时,它会删除浏览器数据。 它最适合用于专门为 Web 开发创建的配置文件。 它是为响应创建的:在隐身模式下忽略/重置 devtools 设置 执照 您可以使用此扩展...

    VISUAL C++MFC扩展编程实例

    了解用 M F C来做什么涉及到对4个基本概念的理解:Windows API...除了这些概念以外,本部分将讨论一下工具栏和状态栏。最后我们将讨论一下 M F C如何同非Wi n d o w s构件进行通信,如串行口和I n t e r n e t站点。

    MyFll Microsoft Visual FoxPro设计的扩展库

    SendMessage 向指写窗口发送指定消息 PostMessage 将消息投递到指定句柄的消息队列 ShowWindow 显示指定窗口 ShowWindowAsync 显示指定窗口 SetWindowLong 设置窗口的扩展样式 SetLayeredWindowAttributes...

    PT80-NEAT开发指南v1.1

    窗口事件 ............................................................................................................................................... 24 窗口类概览 ....................................

    VISUAL C++MFC扩展编程实例.rar

    无论读者是否已经读过本系列的书籍,或者已经具备了多年的编程...除了这些概念以外,本部分还 将讨论一下工具栏和状态栏。最后我们将讨论一下M F C如何同非Wi n d o w s构件进行通信,如 串行口和I n t e r n e t站点。

    VC++常用功能实例

    21、如何单击除了窗口标题栏以外的区域使窗口移动 43 22、如何改变视窗的背景颜色 43 23、如何改变窗口标题 44 24、如何防止主框窗口在其说明中显示活动的文档名 44 25、如何获取有关窗口正在处理的当前消息的信息 ...

    VC++常用的共用函数100多页

    21、如何单击除了窗口标题栏以外的区域使窗口移动 43 22、如何改变视窗的背景颜色 43 23、如何改变窗口标题 44 24、如何防止主框窗口在其说明中显示活动的文档名 44 25、如何获取有关窗口正在处理的当前消息的信息 ...

    图片预览器

    函数调用的第一个参数是产生信号的widget组件(即按钮等窗口构件),而name则是希望捕获的信号或事件的名称,callback_func则是事件发生后所调用的回调函数名称,而第四个参数func_data则是传递给回调函数的参数。...

    Mute Tab-crx插件

    此扩展可以切换当前活动选项卡,当前窗口中的选项卡,其他窗口中的选项卡以及活动窗口以外的所有选项卡的静音。 您可以从工具栏弹出窗口访问扩展程序的控件,也可以通过定义自定义键盘快捷键来访问扩展程序的控件。 ...

    Excel VBA实用技巧大全 附书源码

    01022将Excel移动到屏幕以外 01023隐藏Excel 01024改变Excel的标题文字 01025删除Excel的标题文字 01026将Excel设置为全屏显示 01027在状态栏中显示信息 01028显示、隐藏状态栏 01029显示、隐藏编辑栏 01030显示、...

    Chrome-Tab-Saver:Tab Saver是一个开放源代码的Chrome扩展程序,用于保存您的标签并在以后使用

    Chrome-Tab-Saver Tab Saver是一个Chrome扩展程序,用于保存您的... 您可以将其与基本弹出窗口一起使用。 您的数据不会存储在计算机以外的任何位置。 它是纯净的,安全的和有用的。 您可以通过链接进行设置和使用。

    VF辅导:内存变量操作命令及文件操作命令

    格式1关闭除"命令窗口","调试窗口","跟踪窗口"及"帮助窗口"以外的所有内容.  (2).格式2关闭当前数据库.数据库关闭后,与此数据库相关的东西同时关闭.若没有数据库,则该命令关闭所有工作区中打开的自由表及与此表...

    wagtail-generic-chooser:Wagtail中用于自定义选择器弹出窗口的工具包

    打算将wagtail-generic-chooser扩展到涵盖Wagtail内置wagtail-generic-chooser所有功能,例如内联对象创建表单,然后将其合并到Wagtail中,作为这些内置选择器的新基础实现-这将减少代码重复,并大大简化构建新管理...

    VC++ 专家指导.doc

    (17) 如何单击除了窗口标题栏以外的区域使窗口移动 12 (18) 如何改变视窗的背景颜色 14 (19) 如何改变窗口标题 15 (20) 如何防止主框窗口在其说明中显示活动的文档名 17 (21) 如何获取有关窗口正在处理的...

    SelectGo:Chrome 扩展程序,允许用户自动复制和运行谷歌搜索选定的文本。 包括其他选项,以提供更轻松的浏览体验

    或为每个选择选项显示一个整洁的弹出窗口。 为什么要创建另一个工具? 学习。 这是我的第一个 chrome 扩展,所以它的唯一目的是构建一个具有自定义功能的工具,以满足我的浏览需求,并牢记一个理念 - 边做边学。 ...

    Clear Tabs-crx插件

    该扩展名将清除浏览器中除活动选项卡以外的所有内容。 您想轻松清理许多打开的标签吗? 需要快速关闭打开的标签并将它们轻松地恢复生命吗? 通过“清除标签页”,您可以快速关闭Chrome中所有打开的标签页,但当前...

    Close other tabs-crx插件

    语言:English,русский...只需单击扩展名图标或按Ctrl + Shift + Y,其他选项卡将关闭。 您可以在设置中禁用烦人的确认弹出窗口。 您可以在扩展程序热键设置中更改快捷键组合:chrome:// extensions / shortcuts

    windows 程序设计中文版

    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 ...

    Go To Playing Tab-crx插件

    一旦执行该命令,它将关闭除当前选项卡以外的所有发出声音的选项卡,再次执行该命令,它将关闭当前选项卡(如果正在发出声音)。 如果您正在观看某物,并且想要关闭所有其他发出声音的选项卡(这是您正在观看的东西...

Global site tag (gtag.js) - Google Analytics