哲学原理Event(事件)的传遍以及冒泡

by admin on 2018年10月18日

2014-03-05 Created By
BaoXinjian

特征说明与规律图:

哲学原理 1

  • 正规浏览器和Ie9+浏览器还支持事件之冒泡和破获,而IE8-浏览器就支持冒泡
  • 正式与Ie9+浏览器用stopPropagation()或cancelBubble阻止事件传播,而ie8-用e.cancelBubble属性来阻冒泡,注意ie9不支持cancelBubble属性(设置后不奏效),但chrome、safari、opera、firefox都支持cancelBubble属性。
  • Ie8-用attachEvent为dom元素添加一个事变,但要在事件名前长on,此类事件只能当要素的冒泡阶段。
  • stopPropagatin()方法用于阻止事件的传入,如果设置在捕获阶段,则目标与冒泡阶段不见面被实施;
  • cancelBubble属性只能阻止冒泡阶段,对捕获和目标等的轩然大波未可知阻止
  • preventDefault()和window.event.returnValue用于规范浏览器和ie9+,都可阻碍默认事件。ie8-可以用returnValue,preventDefault()。

哲学原理 2一、摘要

以身作则代码(ie8-示例休提供)


html代码

<body class="body" >  
  <div class="log"></div>
  <input type="text" id="inTxt" name="intxt" />
<div class="wrap">
  <div class="cont">
    <button type="button" class="button" id="btn">按钮</button>
    <select name="stopType" id="stopType">
        <option value="1">StopPropagation</option>
        <option value="2">cancelBubble</option>
    </select>
    <button type="button" class="button" id="btnReject">cont阻止捕获或冒泡</button>
  </div>
</div>
</body>
  • 层级关系:body->wrap->cont->button,可以对照点的法则

Trail文件是GoldenGate为了更实用之拿数据库事务信息由源端传递及对象端

Js代码

$(function(){
        var $log = $('.log'), 
            $wrap = $('.wrap'),
            $cont = $('.cont'),
            $btn = document.getElementById('btn'),
            $stopType = $('#stopType'),
            $body = $('body'),
            $inTxt = $('#inTxt'),
            $btnReject = $('#btnReject');
        var ePhase = ["","捕获","目标","冒泡"]

        var setBorderColor = function( $dom, color, time,event){
            $dom = $($dom);
            $log.html($log.html() + $dom.attr('class') + '[' + ePhase[event.eventPhase] + ']' + '<br/>')
            var timeIndex = window.setTimeout(function(){      
            $dom.css({
                'borderColor': color,
                'borderWidth': '4px'
            });
            }, time);
        }    
        //捕获
        $body[0].addEventListener('click',function(event){ 
            $log.html($log.html() + "-------------------<br>");
            setBorderColor($body,'#0866ff ',0,event);
        },true);   
        $wrap[0].addEventListener('click',function(event){
            setBorderColor($wrap,'yellow',2000,event); 
        },true);
        $cont[0].addEventListener('click',function(event){
            event = event || window.event;
            if( $stopType.val() == '1' ){
                event.stopPropagation();
            }else{
                event.cancelBubble = true;
            }
            setBorderColor($cont,'green',1000,event);   
        },true); 
        $btn.addEventListener('click', function(event){ 
            setBorderColor($btn,'red',0,event);
        },true);
        $btnReject[0].addEventListener('click',function(event){ 
            setBorderColor($btnReject,'gray ',0,event);
        },true);

        //冒泡
        $body[0].addEventListener('click',function(event){
            setBorderColor($body,'#0866ff ',0,event);
        },false); 
        $wrap[0].addEventListener('click',function(event){
            setBorderColor($wrap,'yellow',2000,event); 
        },false);  
        $cont[0].addEventListener('click',function(event){
            setBorderColor($cont,'green',1000,event);   
        },false); 
        $btn.addEventListener('click', function(event){ 
            setBorderColor($btn,'red',0,event);
        },false);
        $btnReject[0].addEventListener('click',function(event){  
            setBorderColor($btnReject,'gray ',0,event);
        },false);

        //阻止默认事件
        $inTxt.keypress(function(event){
            //event.preventDefault(); 
            window.event.returnValue = false;
            $body.append( String.fromCharCode( event.keyCode ));
        });

    });
  • 心想事成一个完整的event流的Demo
  • 于cont的破获事件高居来阻事件传播之代码
  • 阻拦默认事件仅仅用于证明
  1. Trail文件处理过程

效果图

哲学原理 3

Step1.
Extract历程抽取万数据以后,GoldenGate会把抽取的工作信息转换为GoldenGate特有的专有格式文件Trail

应用场景

  • 抓获阶段的轩然大波采取场景较少,一般景象下还使在对象和冒泡阶段。
  • 现阶段w3c的标准事件都广泛被支持,如果不兼容ie8-浏览器可摒弃一些兼容性代码。

Step2.
然后Pump进程将Trail文件传输到目标端

故目标端和源端都见面存在Trail文件

  1. Trail文件的分类

源端存放Trail文件,为地方Trail文件

靶端存放Trail文件,为远程Trail文件

  1. Trail文件在的含义

备单点故障,将东西信息持久化,并使checkpoint机制记录其读写位置

设发故障,数据可以依据Checkpoint记录的职更传输

Tail文件并无是必须的,Extract进程可以经过TCP/IP协议,直接用日志信息传输到目标端,但是非引进,一旦有系统故障或者网络故障,可能会见造成数的少

  1. Logdump查看工具

Logdump可以查GoldenGate的trail文件

 

哲学原理 4亚、Tail文件查看


如何查看Process使用的Tail文件

GGSCI (odellprod.com) 6> info REP1
REPLICAT   REP1      Last Started 2015-01-28 05:31   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:01 ago)
Log Read Checkpoint  File /opt/oracle/ggate/dirdat/lt000001
                     2015-01-28 05:31:45.209626  RBA 1105

 

哲学原理 5三、Logdump分析


  1. Logdump作用

Logdump是一个GoldenGate自带的trail文件分析工具,而且会强化对GoldenGate工作原理的喻,非常值得花工夫来研讨它们

  1. Logdump常用命令

(1). Usertoken
 用来展示trail文件之组成部分标志信息。

(2). Ggstoken
 显示GoldenGate的有些号信息。

(3). Headertoken
 显示脑部的符号信息。

(4). ghdr on
 用来打开记录之首信息。

(5). pos first|last| for| rev  其中pos
for|rev 比较主要,用于指定在trail文件被读之倾向(向上|向下)。

(6). count detail
 会显示当前trail文件总的记录数据。

3.
经过Logdump工具分析Tail文件之结构

(1). 一个trail文件结构

a. 文件头部信息

b.
记录的脑瓜儿信息

c.
记录之详细信息

(2).
其他中心

a.
GoldenGate是坐物为单位处理记录之,所以trail文件记录的事件呢commit的时刻

b. Trail文件被的介乎同一事物之record,
由I/O time和Audit RBA值唯一确定

c.
TransInd记录时底record处在当前东西的谁部分

 

哲学原理 6季、Logdump的解析案例


案例:查看时Process正在处理的长河

Step1. 查logdump程序位置,并调用

[ggate@odellprod ggate]$ pwd
/opt/oracle/ggate
[ggate@odellprod ggate]$ ls logdump
logdump
[ggate@odellprod ggate]$ ./logdump

Step2.
查看process正在处理的trail文件和rba

GGSCI (odellprod.com) 6> info REP1
REPLICAT   REP1      Last Started 2015-01-28 05:31   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:01 ago)
Log Read Checkpoint  File /opt/oracle/ggate/dirdat/lt000001
                     2015-01-28 05:31:45.209626  RBA 88381352

Step3. 打开该trail文件,并分析该公文

Logdump 342 >open /opt/oracle/ggate/dirdat/lt000001
Current LogTrail is /opt/oracle/ggate/dirdat/lt000001
Logdump 343 >ghdr on
Logdump 344 >detail on
Logdump 345 >detail data
Logdump 346 >usertoken on
Logdump 347 >pos 1105
Reading forward from RBA 88381352
Logdump 348 >n
___________________________________________________________________
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)
RecLength  :   944  (x03b0)   IO Time    : 2015/01/29 05:47:21.045.532
IOType     :     5  (x05)     OrigNode   :   255  (xff)
TransInd   :     .  (x00)     FormatType :     R  (x52)
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00)
AuditRBA   :     194407       AuditPos   : 89422352
Continued  :     N  (x00)     RecCount   :     1  (x01)

2015/01/29 05:47:21.045.532 Insert               Len   944 RBA 88381352           -->操作类型Insert
Name: GAVINPROD                                                                   -->来源数据库
After  Image:                                             Partition 4   G  b
 0000 000d 0000 0009 3335 3636 3730 3532 3900 0100 | ........356670529...
 04ff ff00 0000 0200 04ff ff00 0000 0300 04ff ff00 | ....................
 0000 0400 04ff ff00 0000 0500 04ff ff00 0000 0600 | ....................
 04ff ff00 0000 0700 04ff ff00 0000 0800 0700 0000 | ....................
 0337 3535 0009 0004 ffff 0000 000a 0004 ffff 0000 | .755................
 000b 0004 ffff 0000 000c 0004 ffff 0000 000d 0004 | ....................
 ffff 0000 000e 0004 ffff 0000 000f 0004 ffff 0000 | ....................
Column     0 (x0000), Len    13 (x000d)
 0000 0009 3335 3636 3730 3532 39                  | ....356670529                -->数据值
Column     1 (x0001), Len     4 (x0004)
 ffff 0000                                         | ....
Column     2 (x0002), Len     4 (x0004)
 ffff 0000                                         | ....
Column     3 (x0003), Len     4 (x0004)
 ffff 0000                                         | ....
Column     4 (x0004), Len     4 (x0004)
 ffff 0000                                         | ....
Column     5 (x0005), Len     4 (x0004)
 ffff 0000                                         | ....
Column     6 (x0006), Len     4 (x0004)
 ffff 0000                                         | ....
Column     7 (x0007), Len     4 (x0004)
 ffff 0000                                         | ....
Column     8 (x0008), Len     7 (x0007)

 

Thanks and Regards

哲学原理 7

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图