`

Chrome中捕获和冒泡的demo

阅读更多
一言以蔽之,曰:“先捕获,后冒泡!”


该代码只适合于有addEventListener方法的浏览器,没有做判断和容错,使用方法为:拷贝代码并保存为xxx.html,用浏览器运行,点击中间的click me,于是有了一个动画效果,很粗糙,只为了庆祝程序员节。

<!DOCTYPE html>
<html>
<head>
  <title>Capture & Bubble</title>
  <style type="text/css">
  div { float: left;border: 1px solid #CCC;padding: 30px;background-color: #FFF; text-align: center; vertical-align: middle;}
  </style>
</head>
<body>
<div>
  <div>
    <div>
      <div>
        <div style="width:100px; height:100px; line-height: 100px; cursor:pointer;">Click Me</div>
      </div>
    </div>
  </div>
</div>
<script type="text/javascript">
var divList = document.getElementsByTagName('div');
var timer = 0;
for (var i = 0, len = divList.length; i < len; i ++) {
    (function(j) {
        var divNode = divList[j];
        var changeBg = function(type) {
            if (!divNode.getAttribute('hasClicked')) {
                divNode.setAttribute('hasClicked', 0);
            }
            var hasClicked = divNode.getAttribute('hasClicked') - 0;
            if (hasClicked <= 2) {
                hasClicked ++;
                divNode.setAttribute('hasClicked', hasClicked);
                timer ++;
                if (hasClicked == 1) {
                    window.setTimeout(function() {
                        divNode.style.backgroundColor = '#444';
                        console.log(type);
                    }, timer * 1000);
                } else {
                    window.setTimeout(function() {
                        divNode.style.backgroundColor = '#FFF';
                        divNode.setAttribute('hasClicked', 0);
                        console.log(type);
                    }, timer * 1000);
                }
            }
        };
        divNode.addEventListener('click', function(e) {
            // capture
            changeBg('capture');
        }, true);
        divNode.addEventListener('click', function(e) {
            // bubble
            changeBg('bubble');
        }, false);
    })(i);
}
</script>
</body>
</html>
分享到:
评论

相关推荐

    chrome插件开发,完整demo

    chrome插件开发,完整demo,包含 这是一个popup页面! background 打开background 调用background页JS方法 获取background页的标题 设置background页标题 (验证background生命周期和单实例特性) 窗口操作演示 新窗口...

    chrome插件js注入网页demo

    【标题】:“Chrome插件JS注入网页Demo” 这个示例是一个关于如何在Chrome浏览器中创建并使用JavaScript(JS)插件来注入代码到网页的详细教程。Chrome插件是基于浏览器扩展机制,允许用户自定义浏览器功能,如添加...

    谷歌浏览器插件开发代码demo | google-chrome-plugin-demo.zip

    在"full-chrome-plugin-demo"中,我们可以学习如何编写和调用Chrome的API来执行此类任务。 4. **内容脚本**: 内容脚本被注入到网页中,可以直接操作DOM,但不能直接访问浏览器的API。它们用于与网页交互,实现对...

    Chrome插件开发完整demo

    `chrome-plugin-demo-master`的代码中可能包含了一些调试技巧。 8. **发布与更新** 完成插件开发后,可以通过Chrome Web Store发布。`manifest.json`中的`version`字段用于管理插件版本,每次更新都需要递增此值。...

    chrome 插件开发各种功能demo

    在这个名为"chrome-plugin-demo-master"的压缩包中,你将找到一系列示例,帮助你理解和学习Chrome插件的各种功能开发。 1. **manifest.json**:每个Chrome插件的核心配置文件,它定义了插件的元数据,如名称、版本...

    chrome-har-capturer, 从无头 Chrome 实例捕获硬盘文件.zip

    chrome-har-capturer, 从无头 Chrome 实例捕获硬盘文件 chrome-har-capturer 从无头 Chrome 实例捕获硬盘文件。这个模块使用 chrome-remote-interface 来测试 Chrome 。 设置从NPM安装这里模块:npm instal

    谷歌chrome(扩展ie内核 chrome.r39.crx+demo示例).zip

    谷歌Chrome浏览器是一款非常流行的网页浏览器,以其速度、稳定性和安全性受到全球用户的喜爱。然而,有时候在处理特定的网页或应用时,可能需要依赖其他内核,例如IE内核。在这个场景下,"谷歌chrome(扩展ie内核 ...

    chrome插件demo 实现各个类型的js之间的通信

    在这个"chrome插件demo"中,我们主要关注的是不同类型的JavaScript之间的通信,这在Chrome扩展开发中是一个关键的议题。 在Chrome插件的开发中,有多种JavaScript环境同时运行,包括背景脚本(background script)...

    chrome插件消息交互机制demo

    chrome插件消息交互机制demo,popup与background以及content_scripts 之间的消息交互demo 详细解释http://blog.csdn.net/summerxiachen/article/details/78698878

    android-webrtc-demo,基于chrome64

    在Android WeRTC Demo中,你将学习到如何设置和管理上述组件,以及如何处理网络变化、错误恢复和性能优化等问题。这对于开发实时通信应用,如视频会议、在线教育、远程医疗、游戏等场景来说,是非常有价值的参考资料...

    selenium+JAVA+chrome自动化测试demo

    【描述】中的信息虽然简洁,但我们可以推断出这是个示例项目,可能包含了如何设置和运行Selenium测试用例的步骤,特别是针对Chrome浏览器的。这个“demo”可能是为了展示如何配置环境、编写测试脚本以及执行自动化...

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

    在实际应用中,事件冒泡和捕获的区别可能会导致不同的行为。例如,当在一个包含多个嵌套元素的结构中添加事件监听器时,点击内部元素会依次触发所有祖先元素的事件。这可以通过在事件处理函数中使用`event....

    Chrome抢票小插件demo

    Chrome抢票小插件demo是一种基于谷歌浏览器(Chrome)的扩展程序,用于帮助用户提高抢购火车票或其他有限资源的效率。这个demo是为开发者提供一个思路和参考,而不是一个可以直接使用的完整插件。下面我们将深入探讨...

    Chrome-toole-demo.zip

    在这个demo中,背景脚本可能是实现消息发送的核心部分。 4. **Popup**:弹出窗口是用户与插件交互的一种方式,通常包含HTML、CSS和JavaScript,用于显示一些设置或功能。 5. **Options Page**:如果需要,插件还...

    Chrome扩展程序-Demo.zip

    在"Chrome扩展程序-Demo.zip"这个压缩包中,我们有一个名为"crx-demo"的示例项目,这将引导我们了解如何开发这样的插件。 Chrome扩展程序基于Web技术,如HTML、CSS和JavaScript构建,这意味着如果你熟悉这些技术,...

    谷歌浏览器网页元素分析工具+Chrome_SPY+元素捕获+PRA

    标题中的“谷歌浏览器网页元素分析工具+Chrome_SPY+元素捕获+PRA”涉及到的是在Web开发和调试过程中常用的一些技术与工具。下面将详细解释这些概念。 1. **谷歌浏览器**(Google Chrome):这是一款由谷歌公司开发...

    chrome拓展程序demo

    总的来说,"chrome拓展程序demo"项目是一个实践和学习Chrome拓展开发的好材料,通过对其中代码的分析和修改,开发者可以深入了解Chrome的扩展机制,并开发出符合自己需求的实用工具。同时,这也是提升Web开发技能,...

    良田高拍仪浏览器demo兼容chrome

    良田高拍仪兼容chrome进行操作的demo程序,程序需要安装对应的驱动,驱动包含在资源中。控件件支持IE,Chrome,FireFox三大主流浏览器内核,支持Win7,Win8,Win8.1及Win10等操作系统。注意:浏览器需要支持HTML5...

    Chrome插件小狐狸钱包demo

    Chrome插件小狐狸钱包demoChromeChromeChromeChromeChromeChromeChromeChromeChromeChromeChromeChromeChromeChromeChromeChromeChromeChromeChromeChromeChrome

    C# chrome内核浏览器,测试完美,本人环境vs2015,内附有demo

    标题中的"C# chrome内核浏览器"指的是使用C#编程语言开发的、基于Google Chrome浏览器内核的Web浏览器应用。这种浏览器通常利用Chromium开源项目提供的Web渲染引擎,以实现高速的网页加载和良好的兼容性。在C#中,...

Global site tag (gtag.js) - Google Analytics