event

js阻止事件冒泡

若如初见. 提交于 2020-02-10 09:02:27
<body>  <form id="form1" runat="server">    <div id="divOne" onclick="alert('我是最外层');">      <div id="divTwo" onclick="alert('我是中间层!')">        <a id="hr_three" href="http://www.baidu.com" mce_href="http://www.baidu.com"onclick="alert('我是最里层!')">点击我</a>      </div>    </div>  </form></body> 比如上面这个页面, 分为三层:divOne是第外层,divTwo中间层,hr_three是最里层; 他们都有各自的click事件,最里层a标签还有href属性。 运行页面,点击“点击我”,会依次弹出:我是最里层---->我是中间层---->我是最外层 ---->然后再链接到百度. 这就是事件冒泡,本来我只点击ID为hr_three的标签,但是确执行了三个alert操作。 事件冒泡过程(以标签ID表示):hr_three----> divTwo----> divOne 。从最里层冒泡到最外层。 如何来阻止? 1.event.stopPropagation(); <script type="text

QP简介

瘦欲@ 提交于 2020-02-10 02:03:05
QP简介     QP ( Quantum Platform ) 是一个轻量级的、开源的、基于状态机的、事件驱动型应用程序框架。这个框架包括四部分:   事件处理器 (QEP) ;   轻量级的事件驱动框架 (QF) ; 任务调度微内核 (QV 、 QK 、 QXK) ;   实时跟踪调试器 (QS) 。 (1 ) QEP   Quantum Event Processor 是一个通用的,可移植的,可重用的状态机引擎。   QEP 允许你直接把 UML 样式的状态图映射为代码。   QEP 提供了传统的简单平面状态机和层次式状态机。 QEP 可以直接操作事队列和事件分发机制。 (2)QF   QF 是一个 通用的, 事件驱动 的应用框架,是一个实时框架,面向嵌入式系统。   QF 被设计成和 QEP , RTOS 协同工作。   QF 包含了事件队列,活动对象,事件遍历等。 (3)QK   QK 是一个 轻量级 可抢占型实时内核   QK 是一个 极小的,按 RTC 习惯的,执行独立任务的内核。   QK 必须和 QF 版本相匹配。 (4)QS   一个强大的调试工具 QEP (Hierarchical Event Processor )   事件处理器,也可以理解为一个状态机引擎,当有事件需要处理时,调用当前状态的状态函数处理这个事件,并处理调用状态函数的返回值

十二、GUI设计-画图程序

跟風遠走 提交于 2020-02-09 20:27:14
"""小小画笔"""from tkinter import *from tkinter.filedialog import *from tkinter.colorchooser import *height_root = 450width_root = 900class Application(Frame): def __init__(self, master=None,bgcolors="#000000"): super().__init__(master) # super()代表的是父类的定义,而不是父类对象 self.master = master self.bgcolors = bgcolors self.pack() self.createWidget() self.x = 0 self.y = 0 self.fgcolor = "#ff0000" self.lastdrawLine = 0 self.drawFlag = FALSE def createWidget(self): #创建画图区域 self.drawPad = Canvas(root, width=width_root, height=height_root*0.9, bg=self.bgcolors) self.drawPad.pack() #创建按钮 btn_start = Button(text=

JS事件委托

旧街凉风 提交于 2020-02-09 14:52:09
hello,沐晴,又来更新啦,今天呢就接着上篇博文讲讲冒泡带给我们的一大优点,就是产生了所谓的事件委托,初听事件委托,觉得有点高大上,了解过后发现它真是个非常有用的东西。OK,下面就跟我一起一探究竟把。。。 先看看解析,事件委托:也称事件代理 就是利用冒泡的原理 把加事件加到父级上,触发执行效果 首先呢,你一定写过这样的程序,有一个列表,当鼠标移入每个li,背景颜色变红,于是我们写出了这样的代 码: (我给的代码一般都写的重点代码,html大家可以自行写哈。) window.onload = function(){ var oUl = document.getElementById('ull'); var aLi = document.getElementsByTagName('li'); //获取所有列 for(var i =0;i < aLi.length;i++){ aLi[i].onmouseover = function(){ this.style.background = "red"; } } 当然这样一看代码也没什么问题,通过循环给每个li加事件,但想一想如果我们有很多个li,是不是要加很多次事件,这样其实是非常耗性能的。那么我们会想,能不能只加一个事件就能实现呢。当然是能的,不然我就不会在这扯了。 那就是通过冒泡原理进行事件委托,我们可以把事件只加给父级oUL

移动端:div在手机页面上随意拖动

夙愿已清 提交于 2020-02-08 22:16:11
1 <!doctype html> 2 <html> 3 <head> 4 <title>弹窗</title> 5 <meta charset="utf-8"> 6 <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script> 7 <style> 8 body{margin:0;padding:0;} 9 .barrage{position:fixed;display:block;top:0;} 10 .barrage_name{width:70px;height:70px;background:-webkit-gradient(linear,0 0,100% 100%,from(#f00), to(#0f0));border-radius:50%;} 11 .barrage_name_hover{width:70px;height:70px;background:-webkit-gradient(linear,0 0,100% 100%,from(#ff0), to(#00f));border-radius:50%;} 12 .col1{color:#fff;display: block;padding: 17px;text-align: center;} 13

de.greenrobot.event.EventBusException: Subscriber class dji.midware.a.e already registered to event class

試著忘記壹切 提交于 2020-02-08 09:36:07
java.lang.RuntimeException: Unable to create application com.android.tools.fd.runtime.BootstrapApplication: de.greenrobot.event.EventBusException: Subscriber class dji.midware.a.e already registered to event class dji.midware.d.b at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4867) at android.app.ActivityThread.access$1900(ActivityThread.java:163) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1443) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java

JS 传播事件、取消事件默认行为、阻止事件传播

落花浮王杯 提交于 2020-02-08 09:29:41
1.事件处理程序的返回值 通常情况下,返回值false就是告诉浏览器不要执行这个事件相关的默认操作。例如,表单提交按钮的onclick事件处理程序能通过返回false阻止浏览器提交表单,再如a标签的onclick事件处理程序通过返回false阻止跳转href页面。类似地,如果用户输入不合适的字符,输入域上的onkeypress事件处理程序能通过返回false来过滤键盘输入。 事件处理程序的返回值只对通过属性注册的处理程序才有意义。 2.调用顺序 文档元素或其他对象可以为指定事件类型注册多个事件处理程序。当适当的事件发生时,浏览器必须按照如下规则调用所有的事件处理程序: 通过设置对象属性或HTML属性注册的处理程序一直优先调用。 使用addEventListener()注册的处理程序按照它们的注册顺序调用。 使用attachEvent()注册的处理程序可能按照任何顺序调用,所以代码不应该依赖于调用顺序。 3.事件传播   在调用在目标元素上注册的事件处理函数后,大部分事件会“冒泡”到DOM树根。调用目标的父元素的事件处理程序,然后调用在目标的祖父元素上注册的事件处理程序。这会一直到Document对象,最后到达Window对象。   发生在文档元素上的大部分事件都会冒泡,值得注意的例外是focus、blur和scroll事件。文档元素的load事件会冒泡

React Hooks和TypeScript完全指南

旧时模样 提交于 2020-02-08 09:21:14
引言 React v16.8 引入了 Hooks,它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。这些功能可以在应用程序中的各个组件之间使用,从而易于共享逻辑。Hook 令人兴奋并迅速被采用,React 团队甚至想象它们最终将替换类组件。 以前在 React 中,共享逻辑的方法是通过高阶组件和 props 渲染。Hooks 提供了一种更简单方便的方法来重用代码并使组件可塑形更强。 本文将展示 TypeScript 与 React 集成后的一些变化,以及如何将类型添加到 Hooks 以及你的自定义 Hooks 上。 引入 Typescript 后的变化 有状态组件(ClassComponent) API 对应为: React.Component<P, S> class MyComponent extends React.Component<Props, State> { ... 以下是官网的一个例子,创建 Props 和 State 接口,Props 接口接受 name 和 enthusiasmLevel 参数,State 接口接受 currentEnthusiasm 参数: import * as React from "react"; export interface Props { name: string;

利用js写了个很简单 刮刮卡(可能和正式的不太一样)

喜你入骨 提交于 2020-02-08 05:33:10
今天利用js 写了个小刮刮卡 不是那种canvas刮刮卡 很简单 利用 onmouseover事件 逐渐降低 透明度 达到最终能看到最后的图片 上代码 可能有错误 哈哈 我是新手 望指点 我好改改 上面这是css代码 下面这是js代码 var ul = document . getElementsByTagName ( "ul" ) [ 0 ] ; var li = document . getElementsByTagName ( "li" ) ; var index = 1 ; for ( var i = 0 ; i < li . length ; i ++ ) { li [ i ] . onmouseover = function ( ) { // var event = e || window.event; // var target = event.target || event.srcElement; //这里本想用事件委派 给ul添加事件但是最后鼠标划着划着 // 整个ul都不见了 所以没写出来 index = index - 0.05 ; if ( index <= 0 ) { index = 0 ; } this . style . opacity = index ; // event.stopPropagation(); console . log (

游戏编程模式--观察者模式

笑着哭i 提交于 2020-02-08 03:30:21
观察者模式   定义:在对象间定义一种一对多的关系,以便在某对象发生改变时,与它存在依赖关系的所有对象都能收到通知并自动进行更新。   观察者模式的使用非常的广泛,我们熟知的MVC框架的底层就是观察者模式,java甚至直接把它集成到系统库中(java.util.Observer),c#更是直接将它集成在了语言层面(event关键字)。 解锁成就系统   在现代的游戏中通常都会有一个成就系统,当你完成某个任务的时候,会解锁相应的成就。例如:“杀死100个恶魔”,“从桥上掉下”等。但要实现这么一个优雅的成就系统是比较棘手的,设想”从桥上掉下“这个任务,如果我们把它写在物理系统的碰撞检测中是可以工作的,但同时我们也引入了一个很强的耦合,这个耦合会让我们的代码显得丑陋而且不利于后期的更新和维护。这个时候我们就需要观察者模式了。   那观察者模式是如何工作的了?简单的来说,它就是发生变化的对象发送一个消息通知所有对这个消息感兴趣的对象,不用关心具体是谁,而接收这个消息的对象根据消息的内容自动更新自己。一段简陋但有效的代码可以说明这个情况: void Physics::updateEntity(Entity& entity) { bool wasOnSurface = entity.isOnSurface(); entity.accelerate(GRAVITY); entity.update