document.all是什么呀?

  问题内容:document.all是什么呀?
  • 原讨论链接:http://community.csdn.net/expert/topicview1.asp?id=1676841
  • 所属论坛:JavaScript     审核组:WEB开发
  • 提问者:jshao     解决者:tdl982324
  • 感谢:xinyunyishui、tdl982324
  • 关键字:
  • 答案:

    document.all表示document中所有对象的集合。只有ie支持此属性,因此也用来判断浏览器的种类。你完全掌握dHTML前,你需要了解event对象。两种4.0浏览器都包含event对象。它在事件创立时产生,如点击一个可点击的对象,移动鼠标,或聚焦到一个窗体元素上。vent对象被创建然后传递给处理事件的函数。

    下面是event对象属性的描述,以及Netscape和IE处理它们的方式:


    描述 Microsoft 属性 Netscape 属性 
    代表事件类型的字符串 type    type  
    代表最初发送给对象事件的字符串 srcElement    target  
    光标横坐标  x    x  
    光标纵坐标 y    y  
    相对于页面的横坐标  clientX    pageX  
    相对于页面的纵坐标  clientY    pageY  
    相对于屏幕的横坐标  screenX    screenX  
    相对于屏幕的纵坐标  screenY    screenY  
    键代码  keyCode    which  
    Netscape返回键的代码,IE 返回true或false  altKey
    ctrlKey
    shiftKey  modifiers 


    4.0浏览器增加了一些新事件:


    onDblClick 鼠标双击 
    onKeyDown 键被按下 
    onKeyPress 键被按下然后被释放 
    onKeyUp 键被释放 
    onMouseDown 鼠标被按下 
    onMouseMove 鼠标移动 
    onMouseUp 鼠标被释放 
    onResize 窗口被调整大小 


    4.0浏览器也增加了处理事件的新方法,虽然它们(Netscape和IE)的方式不同。Netscape用的是“时间捕捉”,IE用的是“事件气泡”。



    事件处理对Netscape处理如mouseMove或keyPress等事件是必须的,它并不隐含指向一个标记或元素。你应该告诉客户注意这些事件,并告诉它用什么函数来处理它们。下面例子用window对象的captureEvents方法来描述正在捕捉的事件:



    window.captureEvents(Event.MOUSEMOVE);


    注意到在不用on作为名称一部分的情况下特定事件是如何被指向的。你只是告诉Netscape注意所有发生在窗口中的事件并捕捉它们。然后你需要告诉Netscape用这些被捕捉的时间做些什么。注意on又出现了。



    window.onMouseMove = handlerFunction;

    function handerFunction(yourEvent) {

    alert(yourEvent.screenX);

    }


    这段代码是一个演示事件过程的烦人的例子。每次你移动鼠标,一个对话框会跳出来告诉你它的横坐标位置。以这种方式处理的事件传递一个指针到event对象。从这儿你可以获取必要的信息。一旦你厌倦了捕捉事件,你可以象这样释放它们:



    window.releaseEvents(Event.MOUSEMOVE);


    于是这种类型的事件不再被捕捉。



    IE用不同的方法处理事件,叫做“事件气泡”。在这种方法中,如果你有这样一个结构:



    <body οnclick="bloorf()">

    <p οnclick="baz()">

    <em οnclick="bar()">

    <strong οnclick="foo()">Click on me</strong>

    </em>

    </p>

    </body>


    如果你点击strong标记内的文本,它接收到一个onClick事件,然后发送onclick事件给<em>标记,处理它然后发送到<p>标记,等等,然后直到窗口。这样每个元素以自己的方式处理点击。但是如果你想停止气泡上传,可以取消气泡。



    <script>
    function foo() { 
         doSomeThing(); 
         this.event.cancelBubble = true;
    }
    </script>



    所以如果你不想让某个事件传递到所有它包含的标记,可以象上面那样阻止它。



    你可以看到,因为两种浏览器存在相似的事件,每一步都需要大量的条件化工作,而且没有简单的方式把它们映射到一个句法中。 


    --------------------------------------------------------------------------------
    后页
    前页
    目录 
     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值