利用DOM的事件处理和冒泡机制模拟页面锁定功能

废话不多说,先贴代码:


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<script type="text/javascript" >

var open = "开启夜服";
var cancel = "取消夜服";

// 事件是否继续执行的标识
var eventableflag = true;
document.addEventListener("click", stopClick, true);

function stopClick(e){
e = window.event || e;
var target = e.target;

// 开启、关闭夜服的按钮
if(target.id == "btn4")
{
if(target.innerHTML == open)
{
target.innerHTML = cancel;
eventableflag = false;

}
else
{
target.innerHTML = open;
eventableflag = true;
}
}
// 判断标识,决定是否让事件继续向上冒泡
if(!eventableflag)
{
e.returnValue = false;

// 阻止将来事件的冒泡
e.stopPropagation();
return false;
}
else
{
return true;
}
}
</script>
</head>

<button class="button1" id="btn1">弹出消息1</button>
<button id="btn2">弹出消息2</button>
<button id="btn3">弹出消息3</button>
<button id="btn4">开启夜服</button>

<script type="text/javascript" >

var btn1 = document.getElementById("btn1");
btn1.onclick = function(){
alert("click button 1");
}

var btn2 = document.getElementById("btn2");
btn2.onclick = function(){
alert("click button 2");
}

var btn3 = document.getElementById("btn3");
btn3.onclick = function(){
alert("click button 3");
}
</script>
</html>



效果:

没有开启服务时,一切正常
[img]http://dl.iteye.com/upload/attachment/0078/2594/969cc864-4788-3e14-92f9-588084cc4f50.png[/img]

开启了服务时,让其它元素点击无效
[img]http://dl.iteye.com/upload/attachment/0078/2596/4c2cb80f-f617-32bd-95c9-0df96de05768.png[/img]


当然这个只是实现了DOM的机制,没有考虑IE浏览器。 另外,这里只实现了简单的button,还有其它的如a链接等元素没有考虑,但都可以通过e.target.nodeName 或者 e.target.localName来识别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值