月份: 2015-06

今天学习了 DOM 事件流三阶段

起了个小学生式标题。

这东西又是浏览器历史的一桩恩怨……当最初的 HTML 标记式的语言结构逐步成形后,人们开始对网页内的互动有了要求。当然,这事本来并不难,所有的用户互动归根结底就是『触发事件 – 判断当前状态 – 执行相应命令』的逻辑,而 HTML 本身就已经通过开标签和闭标签组对的形式,很好地形成了后来被称之为『DOM 元素』的数据结构,理论上只要把触发事件分别加到一个个的元素上,或者按需加到某些特定的元素上,就可以执行命令了。

然后问题就来了。

由于 HTML 的表现是盒式结构,都是一些大框框包含小框框的情况。比如如下代码:

形成的 DOM 盒式包含结构大约就是这样:

无命名

当用户点击红块时,实际上浏览器是无法判断这次点击的意图的,也就是说,到底应该是点在红块上,红块对这次点击作出反应,还是点在绿块上,亦或是蓝块上。即使是三者都算作被点到了,三者都有反应,那怎么也得有个先后顺序吧。

有两种顺序都可以,一种是先子后父,先里后外,红绿蓝顺序;第二种是先父后子,先外后里,蓝绿红顺序。

两者都可以,两者都有理,然后老 IE 用的是前者,老 Netscape 用的是后者……结的梁子够多了,也不差这一个了。

于是新的协议为了兼容,提出了 DOM 事件流的三个阶段的设计,即……首先,都别争了,顺序就按『蓝绿红绿蓝』这么来吧……然后,这一顺序又分成三个阶段,第一阶段我称之为『下沉』,顺序为蓝绿;第二阶段『触底』,系统发现红色已经是最底层 DOM 元素了,第三阶段『上浮』,顺序变成了红绿蓝。

这三个阶段是有标准的命名的,分别是『捕获阶段』、『目标阶段』、『冒泡阶段』。并且严格来说,捕获阶段不包括最底层元素,而冒泡阶段包括目标阶段。盗图一张:

001108_Ry8q_214423

尽管规范上来说,要求捕获阶段只注册事件,而在冒泡阶段执行相应阶段。但事实上各浏览器在实现时,都允许在捕获阶段也执行相应的事件。结果就是,对于一个目标,有两次执行事件的机会。这在为 DOM 元素添加事件的 JS 函数里就写得很明白:

其中第三参数就是决定这个事件是否在捕获阶段就开始执行的。

当我们使用 jQuery 等第三方库时,这一特性被 jQuery 很好地隐藏封装起来了,并良好地处理了各浏览器不一致的特性,使得我们可以通过 .click() 函数方便地添加点击事件,并不用考虑三个阶段的问题。

死对你也许是一种震慑,但未必对所有人都是

开宗明义:

一、死亡对你也许是一种震慑,但对别人不一定是。

二、贩卖人口在目前的量刑下已是重罪。

三、法律适罪量刑,并不是保护罪犯,而是在保护受害者不遭受更严重的伤害。

四,贩卖儿童的特殊之处,在于『孩子还活着』这点上,人贩和儿童父母的利益一致。这很别扭,但正是最能承载『找回孩子』这一希望的。如果一律死刑,那么孩子几乎是不可能找回了。

 


 

突然之间被鼓吹『拐卖儿童一律死刑』的给刷屏了。

在我的朋友圈里,要求拐卖儿童一律死刑的,一半是有孩子的,另一半是没孩子的。怎么说呢,有孩子的,多少可以理解爱子之情。没孩子还这样的,呵呵。善良得久了,脑子里只剩水和面了。

『今亡亦死,举大义亦死,等死,死国可乎?』

『民不畏死,奈何以死惧之?』

归根结底,在于你们安生日子过久了,就以为死刑是种多么大的震慑,但事实上未必。死对你也许是一种震慑,但未必对所有人都是。为什么叫『亡命之徒』,正是因为那些人并不把死亡当成是件无限巨大的震慑,而只不过是利益天平上可以衡量的一种损失而已。而法律,也并不像你想像的那样,是人人遵守违者天罚的无上神圣规则。其实在我看来,法律恰恰是与这些突破底限的罪犯之间的讨价还价而已。

『如果你做出怎样的行为,就可能会面对怎样的惩罚,』,这是法律的前半句,而更关键的是后关句,『如果你不做出怎样的行为,就不会有怎样的惩罚。

这才是法律的制定和执行中,更为根本和重要的一环,如果说前半句是在震慑犯罪者,那么后半句则是在拯救受害者。

如果抢劫就是死刑,那么确实不会再有单纯的抢劫了,只是必然会有大量的受害人死亡。因为受害人活着,只会对抢劫犯不利。如果强奸一律判处死刑了,那么所有的强奸都会变成奸杀。如果贪污受贿一律死刑,那么所有的官吏一但开口,就会迅速巨贪并转移财产。如果驾车撞人一律死刑,那么一定会造成大量的撞人拖曳血肉模糊。如果盗版一律死刑,……哦,这时大概又会是同一帮人跳出来说,凭啥死刑。

适罪量刑,是为了让罪犯每施加更多的伤害,就需要承担更重的刑罚,这样,当罪犯无论达到或者不达到目的时,都会出于利益考虑,不向受害者施加更重的伤害。

且问,如果你的孩子正在人贩手上,警察正在追捕,并且很有希望抓住了。你是希望犯人逃跑无望束手就擒呢,还是挺而走险杀了孩子自己再轻身跑路呢?正常来说,你都希望无论犯人怎样都行,自己的孩子能平安归来吧。然而你支持的却是『一律死刑』,你觉得犯人会乖乖交人?还是会友善地扔下孩子自己跑路?

你未免太过自以为是了吧。

再说一遍,适度量刑,是在保护受害者不遭受更严重的伤害。

再说两遍,适度量刑,是在保护受害者不遭受更严重的伤害。

再说三遍,适度量刑,是在保护受害者不遭受更严重的伤害。

那么,你为什么在拐卖,甚至是购买儿童上,就支持『一律死刑』了呢?除了伪善和杀人欲,我没看见别的。

我真心觉得,之前无论转发多么脑残的东西,雾霾也好,炸鸡也罢,顶多是为那些认真工作的人平添一些麻烦,或者伤害一下他们的感情,虽然难受,但不至于伤筋动骨。

但这次,你们这帮脑残,真的是想杀人啊。

一,在转发这个观点时,你是否查阅过现行法律体系下的量刑尺度?是否已经存在死刑的可能性。事实上据我所知,拐卖妇女儿童情节严重的是确实可以处以死刑的。注意,是情节严重。

二,你鼓吹过一律死刑,是否考虑过可能会造成的其它后果,比如犯人为了逃避罪责,直接把小孩弄死再逃跑的情况?

三,你如何确定以死刑震慑,就会让拐卖的犯罪率下降。如何确保不因为刑罚上升,导致贩卖小孩的价格升高,有更多的人挺而走险?同时因为一律死刑的存在,而造成受害人更严重的伤害。

这些事情,无法预测,也没法实验。

从更广阔的情况来看,『一律死刑』是有类似的现实映证的。在我国,运输、贩卖海洛因等强成瘾性毒品,超过 50 克,一律死刑。然后,你再自己去查查辑毒人员为此付出的巨大代价,他们的家人为此付出的代价。但区别在于,毒品的受害人是间接受害人,并不在犯罪过程中出现,不会有毒贩『残忍杀害抛弃自己手上的毒品』,无论打击贩毒多严重,都不会造成毒品受害者更大的伤害。但贩卖儿童却真的可能存在更严重的恶行,因为儿童是在人贩手中的。

事实上贩卖儿童最特殊的恰恰是,孩子活着才有利润,死了就什么都没了。在『孩子活着』这点上,人贩和孩子父母是利益一致的。这很别扭,但恰恰是这点,是最大的希望,也是我最反感『一律死刑』并叱之如此的原因。死刑只会割断最后的希望,把孩子的性命完全吊在人贩本已无几的同情心上,并让遇拐父母位陷于万劫不复之地。

我们应该做的,是改善儿童找回的渠道,建立更好的防拐防丢体系,改进儿童领养的现状,甚至邪恶地说,还可以『创造供给』,从那些虐待亲生子女的父母身边剥夺他们的抚养权,然后交给那些想抚养孩子的父母。

这才是正道。

而当法律失去了『更重的犯罪,会有更严重的惩罚』的惩罚能力,如何阻止犯罪者的罪行升级?指望死刑解决一切问题么?指望死刑阻止犯罪么?横竖是死,发什么善心?

死刑只会让人贩开出更高的价格,只会引来更多的亡命之徒拐带儿童,只会造成被拐卖的儿童非卖即死的惨况。

还是那句话,本来他们就是把自己的性命当作成本,价格更高只能让他们更疯狂。

 


 

观点:

一,只有死刑才能遏制贩卖儿童。

这条不解释了,社会运行自有规律,每个人都会选择最自己最有利的办法,键盘侠们也是,吹牛显正义,道德占高地,也不过是对自己的形象最有利罢了,哪管他人死活。

第二,你不是被贩卖儿童的家长,根本无法体会那种痛苦。

请问转发者们,你们是贩卖儿童的家长吗?我不想在这点上讨论。更可怕的是,还有真的孩子父亲评论说,『因为我不知道我孩子是生是死,如果被拐,相比于我无尽的搜索与痛苦,我宁可他死了』。

第三,失去孩子对家长来说比杀了他们还痛苦,所以一定要判死刑。

我不想在痛苦的程度上作辩解,这并无意义。

重点在于,以这种理由判断贩卖者应该施加何种刑法无疑是将孩子当作父母的一种私人财产,这种私人财产的剥夺对父母产生的伤害程度的大小决定了刑法的轻重。

这是荒诞的逻辑,因为父母对孩子是有监护权,但不是谁完全属于谁、谁是谁的私人财产的关系。人贩贩卖孩子,应以对孩子造成的伤害为主要量刑依据,这是我的看法。不然,孩子父母的痛苦,无疑也会造成父母的亲朋的痛苦,那么这份痛苦也要向罪犯赎回吗?

如果讨论的是精神伤害的罪名,通常也只关注直接伤害的那部分,而『通过对亲密关系或者试图建立的亲密关系进行打击从而伤害到某一方的感情』这种情况是难以处理的,孩子青春期跟父母闹别扭,是不是也让父母心如刀割,是不是也应该把孩子抓起来毙了?追求女神,女神爱理不理,是不是也应该把女神抓起来毙了。我明天就去找二马,他们不理我就让国家把他们毙了。

当然这是一个过于敏感话题,从政治正确性上说,如果父母不在这件事情上『比死还痛苦』的话,就不足以说明他们对于孩子的爱。然而就我个人看来,这种爱与仇恨无异了。这种态度甚至反映出某种现状,太将情感和希望寄托在孩子身上了,这种爱并不包含无私、尊重和理解,往往只是一种对家庭中所有人的负担。

 

最后,还是祝愿天下太平,祝愿务实理性的人,做事能不受傻逼的干扰,祝愿自以为好心,实际办坏事的人,始终办不成事,即使这恐怕很难。

发表评论的 bug 已经解决

样式表加了一行 CSS:

原因是输入姓名、电子邮件、站点的三项都用了 float:left,而下方的框体未清除该样式,导致覆盖。

至于为什么下面的表单没有上浮重叠,是因为下面的框体有大量的 JS 处理。

当 #wp-comment-wrap 元素添加或删除 clear:both 效果时,它在文档中『应当』在的位置是变化的,也就会导致其子元素的位置发生变化。但事实上并未变化,说明是 JS 处理后的效果。

需要 Ctrl+F5 强力刷新一次。