这段script是同时支持IE和NS的,newPos里前两行是判断浏览器类型并取得鼠标坐标的,如果你了解(a==b)?c:d 的用法话这些并不难

解决方案 »

  1.   

    but e.pageX从哪儿来的呢,e这个对象是哪儿的那?
      

  2.   

    document.onmousemove=newPos;
    有一种将document.onmousemove绑定在newPos的感觉,如何解除呢?
      

  3.   

    这个e是Event对象啊!
    你自己写的:
    if(document.layers) document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove=newPos;这个时候,你设置你的文档捕获鼠标移动事件,且处理函数定义为 newPos函数。
    当文档捕捉到相应事件后,会将事件交给处理函数处理,而e则为相应事件。在IE中,事件是当作变量交给处理函数的(就是那个e),所以要得到坐标,必须使用:e.pageX 这样的形式,但是在网景的浏览器中,事件是全局的,所以不需要那个e,只要用event.clientX 就可以得到坐标了。至于别的,我看你都明白,就这么多。
      

  4.   

    //document.captureEvents()方法用一个或多个事件类型做参数
    //这里希望截获的是鼠标移动事件,"Event.MOUSEMOVE"是常量,类似的还
    //有"Event.MOUSEDOWN",和"Event.KEYPRESS"等等,如果要监听多个事件,可以这样写
    //document.captureEvents(Event.MOUSEMOVE | Event.MOUSEDOWN)
    if(document.layers) document.captureEvents(Event.MOUSEMOVE);
    //具体指出事件发生所调用的方法,这里指定newPos()为鼠标移动触发的方法
    document.onmousemove=newPos;
    function newPos(e){
    //得到鼠标当前的坐标值,因为在IE和NS中取坐标值的参数不同,所以先判断是否IE,再取值
    X=(navigator.appName.indexOf("Microsoft")!=-1)?event.clientX:e.pageX
    Y=(navigator.appName.indexOf("Microsoft")!=-1)?event.clientY:e.pageY
    //把取得以后的坐标值作为参数传递给lyrWrt()
    lyrWrt("您鼠标的位置坐标是:[<b><font color=red>"+X+"</b></font> : <b><font color=blue>"+Y+"</b></font>]")
    }//修改文档对象中id为"id"的包含的HTML文本
    function lyrWrt(text) {
    if (document.layers) {
      var lyr = document.layers.id.document
      lyr.open()
      lyr.write(text)
      lyr.close()}
    else document.all.id.innerHTML = text
    }
    呵呵,还有什么需要说明的?