使用DHTML中事件的总结

dhtml

  为组件提供事件处理入口,可以极大的提高组件的封闭性,同时又能让组件很好的和外界通信。并且这也是我们已经习惯使用的一种开发模式,.NET、DHTML等都提供了一套完整的事件处理模型。下面是关于使用DHTML中事件的一个总结。

  DHTML提供了3种事件的使用方式,它们分别是:

  1、Inline HTML: <ELEMENT onXXX='handler'></ELEMENT>

  这是最简单最常用的事件绑定方式,不过这里onXXX的值为handler是不太确切的说法。其实这个handler的位置可以放置任何合法的JavaScript语句,因为IE在生成DHMTL树时会为当前Element构建一个'匿名'成员方法,onXXX指向这个方法的handler。比如我们写下,<element id='elmt' onXXX='var abc =0; for ( var i=0 ; i < 100 ; i++ ) abc+=i;'></element>,实际上在DHMTL树种存在如下代码结构:

function anonymous()
{
  var abc =0; for ( var i=0 ; i < 100 ; i++ ) abc+=i;
}

  此时anonymous方法中的this就是elmt对象。

  2、Event property: object.onXXX = handler

  这个使用方法是把函数名(handler)赋予element预定义的事件属性上(onXXX)。这里需要注意两个问题:

  一是,我们在使用object.onXXX = handler是需要保证object已经在页面中生成。比如我们为document.body赋予事件处理函数,我们必须保证document.body已经存在,就是说我们不能在<body>之前在的全局语句中使用document.body;

  二是,handler必须是函数名,和使用方法1中的handler可以是任何JavaScript语句不同!我们最容易出错的使用是,当我们习惯了在inline html中使用<element id='elmt' onXXX = 'return false'></element>后,如果这样使用elmt.onXXX='return false;'。那么就歇菜了,不会有任何执行效果,当然IE也不报错。正确的使用是:

elmt.onXXX = function() { return false; }

  3、Named Script: <SCRIPT FOR = object EVENT = onclick>

  IE独家支持,没有怎么使用过,不觉得有什么特别的地方哈。如果您知道它的妙处愿闻其详。

  DOM提供了两种事件处理使用,它们分别是:

  1、attachEvent method:

  使用方法:bSuccess = object.attachEvent(sEvent, fpNotify)。解释就抄msdn了
  Parameters
    sEvent Required. String that specifies any of the standard DHTML Events.
    fpNotify Required. Pointer that specifies the function to call when sEvent fires.
  Return Value
      Boolean. Returns one of the following possible values:     true The function was bound successfully to the event.
    false The function was not bound to the event.

  DOM提供的这个事件附加方式实际上是一个集合操作,我们可以多次的向同一个事件签名上attach多个事件处理函数,比如:

window.attachEvent('onload', handler1);
window.attachEvent('onload', handler2);
window.attachEvent('onload', handler3);
window.attachEvent('onload', handlerN);

  将会执行这个N个handler,但是不保证执行顺序。这里有个例外,attachEvent在document.body上attach事件'onload'没有效果,但是attch window对象的'onload'是正确的。根据页面初始化顺序来看,及document.body.attachEvent('onload', handler)返回true来看,这因该是IE的一个bug。

  注意DHTML的Event Property方式和DOM的attachEvent方式的区别:

  Event Property方式,当触发事件时,事件处理函数是一个无参数函数,我们只能通过event这个window的属性来读取和事件相关的信息。attachEvent方式,当事件处理函数被触发时,该函数的第一个参数arguments[0],默认是该窗口上的event。什么意思呢?不明白参看这里。

时间: 2024-08-04 04:45:52

使用DHTML中事件的总结的相关文章

认识DHTML中的“行为”组件

dhtml 在微软IE 5.0版本的浏览器发布以前,网页编程中面对的最大挑战就是不能轻易地创建组件,以达到代码重用和多页面共享的目的.这个问题一直困扰着DHTML(动态 HEML)的网页编程者.他们只能不断地重复书写HTML.CSS和JAVASCRIPT的代码,以满足多个页面上的重复或相似的功能.自IE 5.0浏览器发布后,这种情况得到了改善,它带给我们一个新的指令组合方法,可把实现特定功能的代码封装在一个组件内,从而实现多页面的代码重用,使网页编程进入一个全新的天地.这个新的技术就是我们要谈到

DHTML初学者指南:DHTML中重要的属性方法

dhtml|初学 由于DOM(文档对象模型)概念的推出,这个API使HTML如虎添翼,但是有些学DHTML的朋友还是有些困挠,只是因为目前的手册的书写不太科学,是按字母来分的,不便查阅.其实DOM中最关键是要掌握节点与节点之间的关系(between node and node),想学习DHTML中的DOM千万不要从头到尾地看遍所有的属性和方法,你有三国时张松的"过目不忘"的本领吗?没有吧,那就听我分析一下: 其实DOM教给我们的就是一个层次结构,你可以理解为一个树形结构,就像我们的目录

认识DHTML中的“行为”组件(读后大有启发)

认识DHTML中的"行为"组件 在微软IE 5.0版本的浏览器发布以前,网页编程中面对的最大挑战就是不能轻易地创建组件,以达到代码重用和多页面共享的目的.这个问题一直困扰着DHTML(动态 HEML)的网页编程者.他们只能不断地重复书写HTML.CSS和JAVASCRIPT的代码,以满足多个页面上的重复或相似的功能.自IE 5.0浏览器发布后,这种情况得到了改善,它带给我们一个新的指令组合方法,可把实现特定功能的代码封装在一个组件内,从而实现多页面的代码重用,使网页编程进入一个全新的天

DHTML中重要的属性方法

由于DOM(文档对象模型)概念的推出,这个API使HTML如虎添翼,但是有些学DHTML的朋友还是有些困挠,只是因为目前的手册的书写不太科学,是按字母来分的,不便查阅.其实DOM中最关键是要掌握节点与节点之间的关系(between node and node),想学习DHTML中的DOM千万不要从头到尾地看遍所有的属性和方法,你有三国时张松的"过目不忘"的本领吗?没有吧,那就听我分析一下: 其实DOM教给我们的就是一个层次结构,你可以理解为一个树形结构,就像我们的目录一样,一个根目录,

我对C#中事件委托的通俗看法

这是我对C#中事件的通俗看法,比较适合初学者(其实我也是初学者)对C#事件的理解,本人因为刚入门,在学习C#的事件原理时,发现很多书上写得很不好理解,不适合初学者,所以我想在这里谈谈我对它的看法,可能不是很准确,如果说得对的,请大家鼓鼓掌,不对的或是不规范的地方,还请高手帮忙更正一下,谢谢了. 在学C#之前,我看过<JAVA编程思想>,还有一些JAVA的入门级的书籍,其中对事件的讲解,总是用事件监听,事件适配器来举例, 所以我就一直认为,在C#中,RUNTIMING会一直监测每个控件的状态,如

WinXP系统中事件查看器怎么打开

  WinXP系统中事件查看器怎么打开          第一:事件查看器怎么打开? 要打开事件查看器,请按照下列步骤操作: 1.单击"开始",然后单击"控制面板".单击"性能和维护",再单击"管理工具",然后双击"计算机管理".或者,打开包含事件查看器管理单元的 MMC. 2.在控制台树中,单击"事件查看器".应用程序日志.安全日志和系统日志显示在"事件查看器"窗口

ios-iphone中事件没有被调用

问题描述 iphone中事件没有被调用 在应用中有几个UIViewController.其中一个willAnimateRotationToInterfaceOrientation 事件调用成功了. 如何让willAnimateRotationToInterfaceOrientation对所以可见视图有效? 解决方案 RootViewController中: - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientat

关于JAVA中事件分发和监听机制实现的代码实例

文章标题:关于JAVA中事件分发和监听机制实现的代码实例 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy2012 Email:yanek@163.com qq:    1046011462     一.场景假设 假设有博客系统中需要实现如下功能: 系统中用户发布文章,修改文章,删除文章时,需要一些相关的操作需要执行. 发布文章后,给好友发送邮件通知,给用户加积分,对文章做全文索引. 修改文章后,给好友发送

js中事件绑定,$(&amp;amp;quot;body&amp;amp;quot;).on(&amp;amp;quot;click&amp;amp;quot;)与$(&amp;amp;quot;&amp;amp;quot;).click()区别

问题描述 js中事件绑定,$("body").on("click")与$("").click()区别 <dl> <dt>性别</dt> <dd> <a href="javascript:void(0);" class="sex_icon set_icon"></a><p>男</p> <a href=&quo