setCapture和releaseCapture的小应用「建议收藏」

setCapture和releaseCapture的小应用「建议收藏」       web开发和windows开发最大的区别就是windows开发是有状态的,而web开发是无状态的,在windows中,一切操作都可以由程序来控制,除非强制执行ctrl+alt+del;但web操作就不一样了,即使执行很重要的操作,用户一点击浏览器关闭按钮,就将前面操作成果化为乌有.尽管可以在onunload事件中加些代码,让用户可以选择是否退出,但不能从根本上解决问题!    

大家好,又见面了,我是你们的朋友全栈君。        web开发和windows开发最大的区别就是windows开发是有状态的,而web开发是无状态的,在windows中,一切操作都可以由程序来控制 ,除非强制执行ctrl+alt+del;但web操作就不一样了,即使执行很重要的操作,用户一点击浏览器关闭按钮,就将前面操作成果化为乌有.尽管可以在onunload事件中加些代码,让用户可以选择是否退出,但不能从根本上解决问题!

        前几天,从网上看到setCapture方法,了解了一下,大体是这样的意思,当在IE文档某个区域中使用了这个方法,并且写了onclick或者onmouse***等有关的鼠标事件方法,那么它就会监视相应的鼠标操作,即使你的鼠标移出了IE,它也一样能捕获到.如果你在某div中的onclick事件中写了一个alert命令,这时,你点击的关闭按钮,它也一样会弹出alert窗口.releaseCapture与setCapture方法相反,释放鼠标监控.

        利用这个特性,我们可以延缓IE的关闭窗口等破坏性操作,将一些重要的操作能够在破坏性操作执行之前得到处理.

        有一点遗憾:setCapture和releaseCapture 不支持键盘事件.只对onmousedown, onmouseup, onmousemove, onclick, ondblclick, onmouseover, onmouseout这样的鼠标事件起作用.

        下面是一个小例子,若我们要对divMain这个div元素里面的内容进行保护:

         1). 对divMain执行setCapture方法:

document.getElementById(“divMain”).setCapture();

2).加入一按钮btnChange,可以进行setCapture和releaseCapture切换,定义一全局变量;

var isFreeze = true;

3).在btnChange的onclick事件中,加入下列代码:

setCapture和releaseCapture的小应用「建议收藏」
function
 change_capture(obj)
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」


{

setCapture和releaseCapture的小应用「建议收藏」        isFreeze 
= !isFreeze;
setCapture和releaseCapture的小应用「建议收藏」    
if(isFreeze)
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」    
{

setCapture和releaseCapture的小应用「建议收藏」        obj.value 
= releaseCapture;
setCapture和releaseCapture的小应用「建议收藏」        document.getElementById(
divMain).setCapture();
setCapture和releaseCapture的小应用「建议收藏」    }

setCapture和releaseCapture的小应用「建议收藏」    
else
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」    
{

setCapture和releaseCapture的小应用「建议收藏」        obj.value 
= setCapture;
setCapture和releaseCapture的小应用「建议收藏」        alert(
保存!);                        //可以执行重要操作
setCapture和releaseCapture的小应用「建议收藏」
        document.getElementById(divMain).releaseCapture();
setCapture和releaseCapture的小应用「建议收藏」    }

setCapture和releaseCapture的小应用「建议收藏」}

4).divMain的onclick事件中,加入下列代码:

setCapture和releaseCapture的小应用「建议收藏」
function
 click_func()
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」


{

setCapture和releaseCapture的小应用「建议收藏」    
if(event.srcElement.id == divMain)
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」    
{

setCapture和releaseCapture的小应用「建议收藏」        alert(
处理中…);                                                            //常规操作
setCapture和releaseCapture的小应用「建议收藏」
        document.getElementById(divMain).setCapture();
setCapture和releaseCapture的小应用「建议收藏」    }

setCapture和releaseCapture的小应用「建议收藏」    
else
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」    
{

setCapture和releaseCapture的小应用「建议收藏」        
if(isFreeze && event.srcElement.id != btnChange)
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」        
{

setCapture和releaseCapture的小应用「建议收藏」            alert(
未执行releaseCapture,不能点击);
setCapture和releaseCapture的小应用「建议收藏」            document.getElementById(
divMain).setCapture();
setCapture和releaseCapture的小应用「建议收藏」        }

setCapture和releaseCapture的小应用「建议收藏」    }

setCapture和releaseCapture的小应用「建议收藏」}

5).对ALT+F4进行处理,在body的onkeydown事件中加入下列代码:

setCapture和releaseCapture的小应用「建议收藏」
function
 keydown_func()
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」


{

setCapture和releaseCapture的小应用「建议收藏」    
if (event.keyCode==115  && event.altKey)            //ALT+F4
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」
    {

setCapture和releaseCapture的小应用「建议收藏」        
if(isFreeze)
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」        
{

setCapture和releaseCapture的小应用「建议收藏」                alert(
保存!);                                        //可以执行重要操作
setCapture和releaseCapture的小应用「建议收藏」
               }
            
setCapture和releaseCapture的小应用「建议收藏」            
//window.showModelessDialog(“about:blank”,””,”dialogWidth:1px;dialogheight:1px”);            
setCapture和releaseCapture的小应用「建议收藏」
        //return false;
setCapture和releaseCapture的小应用「建议收藏」
        }

setCapture和releaseCapture的小应用「建议收藏」        document.getElementById(
divMain).setCapture();
setCapture和releaseCapture的小应用「建议收藏」}

完整代码如下:

setCapture和releaseCapture的小应用「建议收藏」
<
HTML
>
 
setCapture和releaseCapture的小应用「建议收藏」    

<
head
>

setCapture和releaseCapture的小应用「建议收藏」        

<
title
>
setCapture和releaseCapture的小应用
</
title
>

setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」        

<
SCRIPT 
LANGUAGE
=”JavaScript”
>

 
setCapture和releaseCapture的小应用「建议收藏」        
<!–      
setCapture和releaseCapture的小应用「建议收藏」            
var isFreeze = true;
setCapture和releaseCapture的小应用「建议收藏」            
setCapture和releaseCapture的小应用「建议收藏」            
function click_func()
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」            
{

setCapture和releaseCapture的小应用「建议收藏」                
if(event.srcElement.id == divMain)
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」                
{

setCapture和releaseCapture的小应用「建议收藏」                    alert(
处理中…);                                                            //常规操作
setCapture和releaseCapture的小应用「建议收藏」
                    document.getElementById(divMain).setCapture();
setCapture和releaseCapture的小应用「建议收藏」                }

setCapture和releaseCapture的小应用「建议收藏」                
else
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」                
{

setCapture和releaseCapture的小应用「建议收藏」                    
if(isFreeze && event.srcElement.id != btnChange)
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」                    
{

setCapture和releaseCapture的小应用「建议收藏」                        alert(
未执行releaseCapture,不能点击);
setCapture和releaseCapture的小应用「建议收藏」                        document.getElementById(
divMain).setCapture();
setCapture和releaseCapture的小应用「建议收藏」                    }

setCapture和releaseCapture的小应用「建议收藏」                }

setCapture和releaseCapture的小应用「建议收藏」            }

setCapture和releaseCapture的小应用「建议收藏」            
setCapture和releaseCapture的小应用「建议收藏」            
function keydown_func()
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」            
{

setCapture和releaseCapture的小应用「建议收藏」                
setCapture和releaseCapture的小应用「建议收藏」                
if (event.keyCode==115  && event.altKey)            //ALT+F4
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」
                {

setCapture和releaseCapture的小应用「建议收藏」                    
if(isFreeze)
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」                    
{

setCapture和releaseCapture的小应用「建议收藏」                alert(
保存!);                                        //可以执行重要操作
setCapture和releaseCapture的小应用「建议收藏」
               }

setCapture和releaseCapture的小应用「建议收藏」            
setCapture和releaseCapture的小应用「建议收藏」            
//window.showModelessDialog(“about:blank”,””,”dialogWidth:1px;dialogheight:1px”);
setCapture和releaseCapture的小应用「建议收藏」
            
setCapture和releaseCapture的小应用「建议收藏」                    
//return false;
setCapture和releaseCapture的小应用「建议收藏」
        }

setCapture和releaseCapture的小应用「建议收藏」        document.getElementById(
divMain).setCapture();
setCapture和releaseCapture的小应用「建议收藏」            }

setCapture和releaseCapture的小应用「建议收藏」            
setCapture和releaseCapture的小应用「建议收藏」            
function change_capture(obj)
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」            
{

setCapture和releaseCapture的小应用「建议收藏」                isFreeze 
= !isFreeze;
setCapture和releaseCapture的小应用「建议收藏」                
if(isFreeze)
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」                
{

setCapture和releaseCapture的小应用「建议收藏」                    obj.value 
= releaseCapture;
setCapture和releaseCapture的小应用「建议收藏」                    document.getElementById(
divMain).setCapture();
setCapture和releaseCapture的小应用「建议收藏」                }

setCapture和releaseCapture的小应用「建议收藏」                
else
setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」                
{

setCapture和releaseCapture的小应用「建议收藏」                    obj.value 
= setCapture;
setCapture和releaseCapture的小应用「建议收藏」                    alert(
保存!);                                    //可以执行重要操作
setCapture和releaseCapture的小应用「建议收藏」
                    document.getElementById(divMain).releaseCapture();
setCapture和releaseCapture的小应用「建议收藏」                }

setCapture和releaseCapture的小应用「建议收藏」            }

setCapture和releaseCapture的小应用「建议收藏」        
//–> 
setCapture和releaseCapture的小应用「建议收藏」
        

</
SCRIPT
>
 
setCapture和releaseCapture的小应用「建议收藏」    

</
head
>

setCapture和releaseCapture的小应用「建议收藏」    

<
BODY  
onkeydown
=”keydown_func();”
>
 
setCapture和releaseCapture的小应用「建议收藏」        

<
div 
id
=”divMain”
 style
=”width:500px;height:400px;border:1px solid #999;padding:2px”
 onclick
=”click_func();”
>

setCapture和releaseCapture的小应用「建议收藏」            点一下IE的菜单或者按钮看看:) 又或者IE窗口外的地方
setCapture和releaseCapture的小应用「建议收藏」            

<
input 
type
=”button”
 value
=”releaseCapture”
 onclick
=”change_capture(this);”
 id
=”btnChange”
>

setCapture和releaseCapture的小应用「建议收藏」setCapture和releaseCapture的小应用「建议收藏」            

<
script 
language
=”javascript”
>


setCapture和releaseCapture的小应用「建议收藏」                document.getElementById(
divMain).setCapture();
setCapture和releaseCapture的小应用「建议收藏」            

</
script
>

setCapture和releaseCapture的小应用「建议收藏」        

</
div
>
 
setCapture和releaseCapture的小应用「建议收藏」        
setCapture和releaseCapture的小应用「建议收藏」    

</
BODY
>
 
setCapture和releaseCapture的小应用「建议收藏」

</
HTML
>

注意:该实例仅能应用于
IE

源代码:点此进入下载页面

博客园下载地址:http://www.cnblogs.com/Files/redleaf1995/capture.rar

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134979.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java中的5大队列,你知道几个?

    Java中的5大队列,你知道几个?本文已收录至https://github.com/vipstone/algorithm《算法图解》系列。通过前面文章的学习《一文详解「队列」,手撸队列的3种方法!》我们知道了队列(Queue)是

    2022年7月2日
    23
  • 2022年编程语言排名,官方数据来了,让人大开眼界。「建议收藏」

    2022年编程语言排名,官方数据来了,让人大开眼界。「建议收藏」之所以说这件事,就是想告诉同学们,努力固然重要,但选择必须要对,一旦选择错了,那很多努力都是白费。这篇文章就是来给同学们提个醒,2022年最好的编程语言是什么?看完后你就知道该如何地去选择了。

    2022年5月7日
    384
  • Generic Host Process for Win32 Services 错误

    Generic Host Process for Win32 Services 错误机器运行时防火墙一直提示“GenericHostProcessforWin32Services”访问网络,选阻止后系统就一直弹出一个GenericHostProcessforWin32Services遇到问题需要关闭的对话框!在资源管理器中把系统文件的隐藏属性打开后,发现每个盘的根目录下和C:/WINDOWS目录下都有一个gg.exe文件,每个盘的根目录下有一个autoru

    2022年10月12日
    4
  • JAVA链表中的回文链表结构

    JAVA链表中的回文链表结构作为一个java初学者,最近遇到了回文链表结构这个难题,经过一番学习总算搞清楚个大概。先来说一下什么是回文链表,会问链表在我们生活中经常能够遇到。会问链表的结构就是例如:1->2->3->2->1。我们将它反转过来还是与原链表相同,这种就称为回文结构。具体方法:1.先找到链表的中间位置2.然后将中间位置的链表反转3.从两边向中间遍历代码如图classNode{publi…

    2022年5月7日
    54
  • JAVA设计模式之单例模式

    本文继续介绍23种设计模式系列之单例模式。概念:  java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。  单例模式有以下特点:  1、单例类只能有一个实例。  2、单例类必须自己创建自己的唯一实例。  3、单例类必须给所有其他对象提供这一实例。  单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例…

    2022年3月11日
    40
  • 实型变量_C语言实型常数的合法形式

    实型变量_C语言实型常数的合法形式实型变量分为两类:单精度型和双精度型,其类型说明符为float单精度说明符,double双精度说明符。在TurboC中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。实型变量说明的格式和书写规则与整型相同。例如:f

    2025年8月25日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号