`

利用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>



效果:

没有开启服务时,一切正常


开启了服务时,让其它元素点击无效



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

相关推荐

    Html dom _BOM 模型 _事件处理机制 _面向对象基础

    以上内容中包含了对DOM中各种对象的属性和方法的使用,BOM模型的核心对象window及其常用方法,JavaScript中的事件处理机制,包括事件是如何产生的、事件对象的特性以及事件冒泡现象,以及面向对象编程的基础知识,...

    利用事件冒泡(Event Bubbling )获取鼠标下的元素属性

    在JavaScript编程中,事件处理是不可或缺的一部分,尤其是事件冒泡(Event Bubbling)机制,它是理解DOM(Document Object Model)事件处理的关键概念之一。事件冒泡是指事件开始时由最具体的元素(文档中嵌套层次...

    jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理

    通过以上分析,我们可以了解到jQuery事件系统的内部工作原理,包括如何阻止事件冒泡、如何触发事件以及处理特殊事件的方式。这对于理解和优化jQuery代码,以及在开发中更有效地使用事件处理具有重要意义。在实际应用...

    阻止滚动条事件冒泡

    要实现这个功能,我们需要理解JavaScript事件冒泡的概念。在DOM中,事件会从最深的节点开始向上层节点传播,直到到达文档的根节点,这个过程就称为事件冒泡。阻止事件冒泡可以避免一个事件被多次处理,提高性能,...

    JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题.docx

    为了确保代码的健壮性和跨浏览器兼容性,开发者需要对各种浏览器的事件处理机制有深入的理解,包括DOM0级、DOM2级事件处理以及IE特有事件模型。同时,通过持续实践和测试,可以避免这些低级错误,提高代码质量。在...

    事件冒泡解决方案

    在JavaScript的DOM编程中,事件冒泡是一个非常重要的概念,尤其在处理多级嵌套元素的事件时。事件冒泡是指事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上转播至最不具体的节点(文档...

    事件冒泡

    在JavaScript和许多其他基于DOM(文档对象模型)的编程语言中,"事件冒泡"是一个重要的概念,尤其在处理用户交互时。事件冒泡是指事件从最深的节点开始,然后逐级向上传播到其父节点的过程。这个过程就像气泡在水中...

    【JavaScript源代码】JavaScript中事件冒泡机制示例详析.docx

    JavaScript中的事件冒泡机制是DOM事件处理的核心概念之一,它涉及到事件在DOM树中的传播方式。事件流主要有三种阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段。 事件捕获阶段是从DOM树的根节点开始,沿着树向下...

    DOM事件流,冒泡 | 捕获 | 委托 ,详解

    目录(一)DOM事件流① 定义② 图解③ 历史(二)冒泡(三)捕获(四)在不同的阶段执行事件(五)提高内存和性能 — 事件委托① 实例② 优点 (一)DOM事件流 ① 定义 DOM事件流包括三个阶段: 捕获阶段 目标阶段 ...

    简析JavaScript事件、以及捕获和冒泡

    DOM事件流包括三个阶段:事件捕获、目标阶段和事件冒泡。在捕获阶段,事件从最外层的元素(如HTML文档)向下传递到目标元素。然后,在目标阶段,事件真正发生在目标元素上。最后,事件冒泡阶段开始,事件从目标元素...

    手写DOM事件模型

    `index.html`可能包含一些DOM元素,而`visitor.js`则实现了上述的事件模型,并添加了一些实际的事件监听器和处理函数,以便于在页面上展示效果。 通过这样的自定义事件模型,开发者可以更好地理解和控制事件处理...

    javascript阻止事件冒泡的一种方法

    JavaScript中的事件冒泡是事件处理的一个重要概念,它是指事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上转播至最不具体的节点(文档)的过程。这个机制允许事件在事件流的每个阶段都...

    DOM事件的区别

    事件委托是一种优化事件处理的技术,其核心思想是不直接为每个子元素绑定事件处理器,而是将事件处理器绑定到父元素上,利用事件冒泡机制来处理子元素的事件。这种方式可以减少事件处理器的数量,提高性能。 ```...

    JS事件冒泡浏览器兼容

    JavaScript事件冒泡是Web开发中的一个关键概念,它涉及到用户与网页交互时事件的传递机制。在浏览器环境中,事件冒泡是指事件从最深的节点开始,然后逐级向上层节点传播事件的过程。这个过程允许事件处理函数在不同...

    JavaScript事件冒泡示例.html

    3. DOM2级事件监听器:这是更现代且推荐的方法,通过`addEventListener`和`removeEventListener`方法添加和移除事件处理程序,可以处理多个事件并且可以控制事件冒泡。 ```javascript button.addEventListener('...

    JS冒泡事件与事件捕获实例详解

    冒泡事件是指当一个事件在一个DOM元素上发生并被触发时,这个事件不仅仅会在该元素上触发,还会按照DOM结构逐级向上(从最深的节点开始)传递至根节点,这一过程称为“事件冒泡”。在冒泡过程中,每一个父级元素都按...

    jQuery技巧之让任何组件都支持类似DOM的事件管理

    本文将探讨如何利用jQuery实现一个技巧,使得任何组件都能够支持类似于DOM事件的管理,包括事件派发、添加/删除监听器、事件冒泡和阻止默认行为。 首先,我们来看传统的发布-订阅模式。这种模式通常用于实现组件间...

    谷歌获取网页dom的插件

    它可能包含了实现上述功能的JavaScript代码,可能包括DOM遍历、事件处理、数据提取等逻辑。 总结来说,"谷歌获取网页DOM的插件"是一个强大的工具,可以帮助开发者和爬虫工程师深入理解和操作网页DOM,有效地抓取和...

    事件冒泡及捕获

    事件冒泡和事件捕获是两种不同的事件处理机制,它们决定了事件如何在DOM(Document Object Model)层次结构中传播。了解这两者对于优化事件处理性能和编写高效代码至关重要。 事件冒泡是从最具体的节点(通常是DOM...

Global site tag (gtag.js) - Google Analytics