zoukankan      html  css  js  c++  java
  • 浏览器的事件机制

    Propagation At this point, we should ask an important question—if an element and one of its ancestors have a handler on the same event, which handler will be fired first? Consider the following figure: For example, we have Element2 as a child of Element1 and both have the onClick handler. When a user clicks on Element2, onClick on both Element2 and Element1 is triggered but the question is which one is triggered first. What should the event order be? Well, the answer, unfortunately, is that it depends entirely on the browser. When browsers first arrived, two opinions emerged, naturally, from Netscape and Microsoft. Netscape decided that the first event triggered should be Element1's onClick. This event ordering is known as event capturing. Microsoft decided that the first event triggered should be Element2's onClick. This event ordering is known as event bubbling. Chapter 8 [ 195 ] These are two completely opposite views and implementations of how browsers handled events. To end this madness, World Wide Web Consortium (W3C) decided a wise middle path. In this model, an event is first captured until it reaches the target element and then bubbles up again. In this standard behavior, you can choose in which phase you want to register your event handler—either in the capturing or bubbling phase. If the last argument is true in addEventListener(), the event handler is set for the capturing phase, if it is false, the event handler is set for the bubbling phase. There are times when you don't want the event to be raised by the parents if it was already raised by the child. You can call the stopPropagation() method on the event object to prevent handlers further up from receiving the event. Several events have a default action associated with them. For example, if you click on a URL link, you will be taken to the link's target. The JavaScript event handlers are called before the default behavior is performed. You can call the preventDefault() method on the event object to stop the default behavior from being triggered. These are event basics when you are using plain JavaScript on a browser. There is a problem here. Browsers are notorious when it comes to defining event-handling behavior. We will look at jQuery's event handling. To make things easier to manage, jQuery always registers event handlers for the bubbling phase of the model. This means that the most specific elements will get the first opportunity to respond to any event.

  • 相关阅读:
    CSS里面position:relative与position:absolute 区别
    JSP页面规格化
    iframe自适应高度
    getElementByTagName的使用
    div左右居中
    @注解与普通web.xml的关系
    显示几秒内跳转
    js如何获取某id的子标签
    common upload乱码
    预览上传图片
  • 原文地址:https://www.cnblogs.com/oxspirt/p/9115366.html
Copyright © 2011-2022 走看看