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


相关推荐

  • RAII机制_机制与机理的区别

    RAII机制_机制与机理的区别本文转载自:https://blog.csdn.net/wozhengtao/article/details/52187484前言&nbsp;&nbsp;&nbsp;&nbsp;RAII的基本思想就是当对象的生命周期结束时,自动调用起析构函数。那以下将围绕RAII,全面的讲解RAII的相关知识。什么是RAII&nbsp;&nbsp;&nbsp;&nbsp;RAII的英文全拼是…

    2022年10月27日
  • python中将字符串转化为数字_python字符串转int

    python中将字符串转化为数字_python字符串转intpython把字符串转化成数字的方法发布时间:2020-08-0317:03:31来源:亿速云阅读:82作者:清晨这篇文章将为大家详细讲解有关python把字符串转化成数字的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python中的int函数只能把整数字符串转换转换成整数另外可用于取出float的整数部分可以用float进行转换测试用例:>&gt…

    2022年11月2日
  • 怎么倍速看百度云视频(火狐浏览器百度云倍速)

    控制台调控videojs.getPlayers(“video-player”).html5player.tech_.setPlaybackRate(2)

    2022年4月16日
  • Azkaban教程[通俗易懂]

    Azkaban教程[通俗易懂]目录一、简介二、各种调度工具特性对比三、安装配置四、Azkaban实战一、简介Azkaban是在LinkedIn上创建的用于运行Hadoop作业的批处理工作流作业调度程序。Azkaban通过工作依赖性解决订购问题,并提供易于使用的Web用户界面来维护和跟踪您的工作流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系为什么需要工作流调度?一个完整的数…

    2022年10月24日
  • idea 设置导入包不带*

    idea 设置导入包不带*

    2021年5月16日
  • idea 查看jsp是否被引用_idea 运行JSP后显示源代码是什么情况

    idea 查看jsp是否被引用_idea 运行JSP后显示源代码是什么情况该楼层疑似违规已被系统折叠隐藏此楼查看此楼没加struts的jar包时可以用,加上jar包后就不能用了。tomcat好像有一个报错信息”C:\ProgramFiles\Java\apache-tomcat-7.0.54\bin\catalina.bat”run[2014-09-1909:05:12,773]Artifactdemo:warexploded:Serverisnot…

    2022年10月21日

发表回复

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

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