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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jetty和tomcat性能比较_tomcat启动jar包

    jetty和tomcat性能比较_tomcat启动jar包相同点1.tomcat与jetty都是一种servlet引擎,他们都支持标准的servlet规范和javaEE规范不同点1.架构比较jetty相比tomcat更为简单jetty架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单tomcat的框架是基于容量设计的,进行扩展是需要了解tomcat的整体设计结构,不易扩展2.性能比较

    2022年10月24日
    0
  • python每天定时9点执行_python定时执行方法

    python每天定时9点执行_python定时执行方法1time.sleepimporttimeforiinrange(5):print(i)time.sleep(10)2用shedimporttimeimportschedschedule=sched.scheduler(time.time,time.sleep)deffunc(string1,float1):print(“nowis”,time.time(),”…

    2022年7月17日
    23
  • git提交代码流程

    git提交代码流程使用git也快有两年了,今天将常用命令总结一下,我描述一个整个的开发流程架构师在gitlab上新建了一个项目,搭好了框架1.我作为开发者之一,首先gitclonehttps://xx用idea打开项目,然后点开idea下面的console,在这里面执行git命令刚进来自然是master分支,然后我们首先创建一个自己的分支并切换过去,命令如下gitcheckout-…

    2022年6月29日
    38
  • top命令查看内存信息_ubuntu查看cpu信息

    top命令查看内存信息_ubuntu查看cpu信息top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使…

    2022年9月24日
    0
  • 铝电解电容分类方法

    铝电解电容分类方法铝电解电容分类方法各大厂商的分类方式基本一致,主要按以下几个指标:极性容量耐压温度特性ESR寿命其他一般来说,电解电容实物上都会印上容值耐压值系列号分类的系列号,则各个厂商都有所不同,没有统一标准,比较常用到的都是各家的标准品,例如VT,RVT等。…

    2022年8月22日
    4
  • 宽度学习与深度学习中的时空转化问题

    宽度学习与深度学习中的时空转化问题ž在自然界中运动是绝对的,静止是相对的。这句话也说明了深度学习过去、现在、未来。由于我发现山东大学有个组和澳门大学陈俊龙团队的宽度学习、极限学习等。目前由于神经网络是黑盒研究、所以很多人利用反卷积和卷积可视化来解释这种微分和积分的编程,由于冗余和稀疏特性使用微积分或者差分求导数和偏导是必然。宽度学习文章和代码研究地址:http://www.broadlearning.ai在深度学习上目…

    2022年5月21日
    40

发表回复

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

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