Ryan对《JavaScript DOM高级程序设计》的笔记(2)

Ryan
Ryan (名号30天内只能修改一次。)

在读 JavaScript DOM高级程序设计

JavaScript DOM高级程序设计
  • 书名: JavaScript DOM高级程序设计
  • 作者: Jeffrey Sambells/Aaron Gustafson
  • 页数: 457
  • 出版社: 人民邮电出版社
  • 出版年: 2008-7
  • 第21页
    function addEvent(node, type, listener ){
         if(!isCompatible) return false
         if(!(node = $(node)) return false
         if(node.addEventListener){
             //W3C
             node.addEventListener( type, listener, false);  //false为只发生冒泡
             return true
         }else if( node.attachEvent){
            //MSIE
            node['e' + type + listener] = listener;
            node[type + listener] = function(){
                 node[ 'e'+type+listener](window.event);
            }
            node.attachEvent( 'on‘+ type, node[type+lisener]);
            return true
        }
        return false;
    }
    
    这个代码片断是2005年所写,是由Jquery作者John Resing所写。尽管不是十分完美,但是却实现了IE和W3C的目标,把事件绑定在元素上,并且this指向正确。其实最费解的是:
    node['e' + type + listener] = listener;
    node[type + listener] = function(){
    node[ 'e'+type+listener](window.event);
    }
    node.attachEvent( 'on‘+ type, node[type+lisener]);
    首先,将事件监听函数赋给了元素的一个属性,然后把事件的执行结果再返回给事件句柄,最后拼成了跟w3c相似的结构。因为w3c的注册函数第三个参数为false,因此此时它们是相同的,都是只发生在冒泡阶段。
    2013-03-30 23:54:34 回应
  • 第23页
    ADS.getElementsByClassName()方法
    其中, className = className.replace(/\-/g,'\\-'); 其作用是转义-,因为有可能会成为范围。例如[a-z],[0-9]。
    2013-03-31 00:15:30 回应