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


相关推荐

  • hexdump用法_linux dump命令

    hexdump用法_linux dump命令本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接。内容可任意使用,但对因使用该内容引起的后果不做任何保证。作者:fireaxe_hq@hotmail.com博客:fireaxe.blog.chinaunix.net转自:http://blog.chinaunix.net/uid-20528014-id-4087756.html开发时经常会…

    2022年9月21日
    2
  • D3js快速入门——用最新版D3js实现树图

    D3js快速入门——用最新版D3js实现树图文章目录 引言 1 D3js 是什么 2 D3js 相对其他数据可视化方案的优势 2 1SVG 对比 Canvas2 2D3 js 对比 Echarts3 怎么用 D3 js 开发一个树图 3 1 前置基础 3 2d3 开发树图流程 3 3 动手实现一个树图 3 3 1 普通 tidetree3 3 2 你的树图不简单 radiotidetre 3 3 更多可能 更多类型的树图引言上周我们组新开项目 技术调研之后决定使用 d3 js 做数据可视化开发 mentor 让我来做初期技术调研 之后的技

    2025年10月24日
    2
  • 宽度 & 深度学习 特点对比

    宽度 & 深度学习 特点对比宽度&深度学习特点对比推荐系统模型介绍实验过程与实验结果实验总结  为了提高神经网络的性能,是应该增加宽度呢?还是应该增加深度呢?增加宽度和增加深度各有什么样的效果呢?本文对论文《Wide&DeepLearningforRecommenderSystemsHeng-Tze》中关于宽度模型和深度模型的对比实验进行介绍。推荐系统  本论文基于推荐系统,推荐系…

    2022年5月11日
    37
  • 两位数乘法的速算方法(三)

    两位数乘法的速算方法(三)两位数乘法的速算方法(三)一、速算方法总结序号类别子类别例如应用举例1首位相同尾数互补71X79|(7+1)x7||1×9|=56092尾数不互补72X73(72+3)x70+2×3=52563尾数和为983X867218-8X10=71384尾数和为1185X867230+8X10=73105尾数相同首数互补27X87|(2×8+7)||7×7|=23496首数不互补27X37|(2X3+7)|

    2022年6月7日
    37
  • Java课程设计—学生成绩管理系统(201521123004-林艺如)「建议收藏」

    Java课程设计—学生成绩管理系统(201521123004-林艺如)「建议收藏」1.团队课程设计博客"团队课程设计博客链接"2.个人负责模块或任务说明①.MenuMenu.jsp在页面中给出提示,用HTML的,与下一个跳转页面进行连接,即点击后进入下

    2022年6月30日
    29
  • oracle视图表怎么修改(oracle视图添加字段)

    一个朋友在回复的时候给出了一篇inthirties写的关于更新视图的帖子,简洁明了,转过来学习学习。===============================================================================Oracle里视图可以update吗?如果在网上做出这样一个问题调查,我想很多的网友朋友,都会不假思索的回答到,不行,视图是逻辑记录,并不…

    2022年4月12日
    45

发表回复

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

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