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


相关推荐

  • Matlab矩阵基本操作(定义,运算)

    一、矩阵的表示在MATLAB中创建矩阵有以下规则:a、矩阵元素必须在”[]”内;b、矩阵的同行元素之间用空格(或”,”)隔开;c、矩阵的行与行之间用”;”(或回车符)隔开;d、矩阵的元素可以是数值、变量、表达式或函数;e、矩阵的尺寸不必预先定义。二,矩阵的创建:1、直接输入法最简单的建立矩阵的方法是从键盘直接输入矩阵的元素,输入

    2022年4月16日
    453
  • WIN7 64位 VS2013下载

    WIN7 64位 VS2013下载下载网址:https://msdn.itellyou.cn/复制到迅雷进行下载。 

    2022年9月10日
    4
  • Debian网卡配置_服务器光纤网卡配置

    Debian网卡配置_服务器光纤网卡配置Debian不同于centos系统,网卡配置不是在/etc/sysconfig/network-scrip里面,而是在/etc/network/interfaces里面1.修改vi/etc/network/interfacesautoeth0#开机自动启动ifaceeth0inetstatic#静态IP设置address192.168.0.10#本机IPnetmask255.255.255.0#子网掩码gateway192.168.0.1#网关ifaceeth0i

    2022年10月9日
    3
  • 杜教筛 以及积性函数的前世今生 –算法竞赛专题解析(4)「建议收藏」

    杜教筛 以及积性函数的前世今生 –算法竞赛专题解析(4)「建议收藏」最全面的杜教筛讲解、最易懂的杜教筛复杂度证明、杜教筛公式、杜教筛模板。

    2022年7月21日
    22
  • 【超详细教程】移植RT-Thread nano,并基于 nano 添加 FinSH/shell

    【超详细教程】移植RT-Thread nano,并基于 nano 添加 FinSH/shell目录背景:移植RT-Threadnano,并基于nano添加FinSH/shell前提及准备工作step1:添加rt-threadnano到裸机工程1.1、NanoPack安装方法一:PackInstaller安装方法二:手动安装1.2、基础工程准备1.3、开始移植rttnano到裸机工程1.4、适配RT-Threadnano1.5…

    2022年5月21日
    90
  • 模糊pid控制算法matlab_matlab模糊控制器

    模糊pid控制算法matlab_matlab模糊控制器上一篇写了模糊自整定PID的理论,这篇来做MATLAB仿真。目录补充内容:如何计算临界稳定下的开环增益Ku和震荡周期TuMATLAB进行模糊PID仿真1、准备工作2、模糊控制器的设计补充内容:如何计算临界稳定下的开环增益Ku和震荡周期Tu学过控制工程或者相关理论的同学应该比较了解,判断系统稳定性的条件一般用到劳斯表(劳斯判据)。而PID控制和模糊PI…

    2022年5月3日
    61

发表回复

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

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