JavaScript Dom编程艺术-C5 最佳实践

一、平稳退化(graceful degradation)
     1.弹出窗口
          window.open(url,name,features)  //(网页地址,窗口名字,窗口属性)
     //例子:
          function popUp(winURL){
              window.open(winURL,"popup","width=320,height=480") ;
          }
     2.伪协议(pseudo-protocol)
          <a href= "javascript:pop('http://www.example.com/');">Example</a>
          是一个不好做法,较老的浏览器不支持。
     3.内嵌的事件处理
          <a href= "#" onclick ="pop();return false;">Example</a>
           #表示文档内部的链接记号。return false 这个连接不会被真的打开。
          这个做法也很糟糕,2, 3都不能平稳退化
      4.如果把href的值填入真实的地址,javascript被禁用也能正常执行。
    
推荐做法:把行为和结构分离开
      1.把事件放在js内处理,而不在html中写上
          例如:
               element.event = action
               getElementById(id).event = action
          根据前面点击图片来做的详细例子。
          <a href="http://www.baidu.com/" class="popup">Example</a>
          
          var links = document.getElementsByTagName("a");
          for(var i = 0; i<links.length; i++){
               if(links[i].getAttribute("class") =="popup"){
                    links[i].onclick = function(){
                         popUp(this.getAttribute("href"));
                         return false;
                    }
               }
          }
          当window.onload时,DOM已经加载好了
          window.onload = prepareLinks;
          function prepareLinks(){上面的js内容}

二、向后兼容
     1.对象检测(object detection)
          如果能理解,则进行
         if(method){
              statements
         }
         如果不能理解,直接返回
         if(!method) return false;

     2.浏览器嗅探技术(browser sniffing)
     未详讲,有兴趣自己查查咯

三、性能考虑
       1.尽量少访问DOM和尽量减少标记
          a.查询DOM元素,浏览器就搜索整个DOM树
          b.过多的标记数量 会增加DOM树的规模,增加遍历的时间成本。
        2.合并和放置脚本
          a.合并脚本可以减少加载页面时发送的请求数量。
          b.把所有脚本放在头部可能导致无法并行加载其它文件(如图像和其他脚本),一般将脚本放置在</body>之前,这样可以提高页面加载速度,且在加载时,window对象的load事件可以对文档进行各种操作。
        3.压缩脚本(.min.js)
          即把文件中不必要的字节(如空格和注释)删除,有的程序设置会使用更短的变量名,来减少文件的大小。
          一般站点板用min.js,工作版.js
     
     

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值