隨筆 - 11  文章 - 3  trackbacks - 0
          <2010年1月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          關于UTF8頁面中文COOKIE個人解決辦法:

          1.使用cgi語言將中文轉換成unicode編碼,如"\u****";
          2.將unicode編碼寫入cookie;
          3.使用js轉換此unicode,如:
          unescape(CE.cookie.get("***").replace(/\\/g,"%"))

          搞定!不知道還有沒有更好的解決方案,或者該方法是否存在一些漏洞問題??
          posted @ 2010-05-25 13:40 jacklau 閱讀(178) | 評論 (0)編輯 收藏
          關于鏈接<a>上面直接寫javascript事件的問題,今天組內討論了一下,小寫一下:

          常見的寫法有:

          1.<a href="javascript:fun()"></a> //直接在href屬性中執行fun事件
          2.<a href="javascript:void(0)" onclick = "fun();"></a> //在onclick屬性中執行fun事件
          3.<a href="#" onclick = "fun();return false;"></a> //href屬性指向"#",而onclick事件中return false阻止默認行為

          最終投票決定使用第三種方法,前兩種方法在IE6都會是gif或其他可以動畫效果的東東靜止掉。。。具體原因應該是瀏覽器渲染問題吧,呵呵

          第三種方法也有用到針對SEO方面的應用,比如我有一個連接是到一個靜態頁面a.html,但是由于需求方面的問題需要通過一個cgi再跳轉到a.html,如:b.cgi?uri=a.html,這樣的寫成:<a href="a.html" onclick="window.open('b.cgi?uri=a.html');return false;">XXX</a>表面上可以解決了問題,但是這種算不算是SEO的URL欺騙行為呢?
          posted @ 2010-01-26 11:20 jacklau 閱讀(389) | 評論 (0)編輯 收藏

          主要功能:
          1.拖動
          2.可配置相對位置
          3.平滑移動

          CE.Tween = {
           plcMove : function(o, a, s, e, callback, speed){
            var sTime = +new Date(), p, speed = speed || 100;
            var iTimer = setInterval(function(){
             p = (+new Date() - sTime) / speed;
             if(p >= 1){
              o.style[a] = e + "px";
              callback && callback.call(o);
              o = null;
              return clearInterval(iTimer);
             }
             o.style[a] = s + (e - s) * ((-Math.cos(p * Math.PI) / 2) + 0.5) + "px";
            }, 10);
           }
          };

          CE.Util.Drag 
          = {
              dcount : 
          0,
              dList : {},
              bind : function(c,obj){
                  var _this 
          = CE.Util.Drag;

                  var _d 
          = obj.d || c;

                  
          if(!_d){return;}

                  
          if(!_d.did){

                      _d.did 
          = _this.dcount++;

                      _this.dList[_d.did] 
          = _d;

                      var _x ,_y,_isdown 
          = false,_scape = null,_p = null;

                      _d.style.cursor 
          = "move";

                      var down 
          = function(e){
                          _isdown 
          = true;

                          _p 
          = obj.refer || document.body;

                          _x 
          = e.clientX - _d.offsetLeft; //初始坐標
                          _y = e.clientY - _d.offsetTop;

                          
          if(null == _scape){
                              _scape 
          = document.createElement("div");
                              _p.appendChild(_scape);
                          }

                          _scape.style.border 
          = "1px dotted #06459c";
                          _scape.style.position 
          = "absolute";
                          _scape.style.zIndex 
          = c.style.zIndex + 1 || 1;
                          _scape.style.width 
          = c.style.width;
                          _scape.style.height 
          = c.style.height;
                          _scape.style.left 
          = c.offsetLeft + "px";
                          _scape.style.top 
          = c.offsetTop + "px";

                          c.style.filter 
          = "Alpha(Opacity=60)";
                          c.style.opacity 
          = 0.6;

                          
          if(_scape){
                              CE.Event.addListener(document,
          "mousemove",move);
                              CE.Event.addListener(document,
          "mouseup",up);
                              document.onselectstart 
          = function() {return false};
                              
          if(window.getSelection){ //非ie
                                  window.getSelection().removeAllRanges();
                              }
                          }
                      };
                      var move 
          = function(e){
                          
          if(!_isdown){return};
                          _scape.style.left 
          = e.clientX - _x + "px";
                          _scape.style.top 
          = e.clientY - _y + "px";
                      };
                      var up 
          = function(){
                          _isdown 
          = false;
                          
          if(_scape){
                              
          if(obj.tween){
                                  CE.Tween.plcMove(c,
          "top",parseInt(c.style.top, 10),_scape.offsetTop);
                                  CE.Tween.plcMove(c,
          "left",parseInt(c.style.left, 10),_scape.offsetLeft);
                              }
          else{
                                  c.style.left 
          = _scape.offsetLeft + "px";
                                  c.style.top 
          = _scape.offsetTop + "px";
                              }
                              c.style.filter 
          = "Alpha(Opacity=100)";
                              c.style.opacity 
          = 1;
                              _scape.style.zIndex 
          = c.zIndex - 1 || -1;
                              _p.removeChild(_scape);
                              _p 
          = null;
                              _scape 
          = null;
                              document.onselectstart 
          = function() {return true};
                          }
                      };
                      CE.Event.addListener(_d,
          "mousedown",down);
                  }
          else{
                      
          for(var item in _this.dList){
                          
          if(_d.did === item.did){
                              
          return;
                          }
                      }
                  }
              }
          };
          posted @ 2010-01-17 12:16 jacklau 閱讀(189) | 評論 (0)編輯 收藏
          特點:
          1.支持fn參數中使用this關鍵字
          2.相同fn綁定無效

          缺點:
          非ie下不能直接使用匿名函數直接當參數傳遞,這個誰有比較好的解決辦法么?


          CE.Event = {
              handler : 
          function(e){
                  e 
          = e || window.event;
                  
          var _fn = "_" + e.type;
                  
          if(this[_fn]){
                      
          for(var _f in this[_fn]){
                          
          this[_fn][_f].call(this,e);
                      }

                  }

              }
          ,
              bind : 
          function(obj, act, fn, capture){
              
          if(window.addEventListener){
                      obj.addEventListener(act,fn,capture 
          || false);
                  }
          else{
                      
          var _fn = "_" + act;
                      act 
          = "on" + act;
                      
          if(!obj[_fn]){
                          obj[_fn] 
          = [];
                          obj[act] 
          = CE.Event.handler;
                      }
          else{
                          
          for(var _f in obj[_fn]){
                              
          if(obj[_fn][_f].toString() === fn.toString()){return};
                          }

                      }

                      obj[_fn][obj[_fn].length] 
          = fn;
                  }

              }
          ,
              unbind : 
          function(obj, act, fn, capture){
                  
          if(window.removeEventListener){
                      obj.removeEventListener(act,fn,capture 
          || false);
                  }
          else{
                      
          var _fn = "_" + act;
                      
          if(obj[_fn]){
                          
          for(var _f in obj[_fn]){
                              
          if(obj[_fn][_f].toString() === fn.toString()){
                                  
          try{
                                      
          delete obj[_fn][_f];
                                  }
          catch(e){
                                      obj[_fn][_f] 
          = null;
                                  }

                                  
          return;
                              }

                          }

                      }

                  }

              }

          }
          ;

          提升了一下執行效率:

          CE.Event = {
              ecount : 
          1,
              handler : 
          function(e){
                  e 
          = e || window.event;
                  
          if(this.evns[e.type]){
                      
          for(var evn in this.evns[e.type]){
                          
          this.evns[e.type][evn].call(this,e);
                      }
                  }
              },
              bind : 
          function(obj, act, fn, capture){
                  
          if(window.addEventListener){
                      obj.addEventListener(act,fn,capture 
          || false);
                  }
          else{
                      
          if(!fn.id){fn.id = CE.Event.ecount++};
                      
          if(!obj.evns){obj.evns = {}};
                      
          if(!obj.evns[act]){
                          obj.evns[act] 
          = {};
                          
          if(obj["on" + act]){
                              obj.evns[act][
          0= obj["on" + act];
                          }
                      }
          else{
                          
          for(var evn in obj.evns[act]){
                              
          if(evn.id === fn.id){return;}
                          }
                      }
                      obj.evns[act][fn.id] 
          = fn;
                      obj[
          "on" + act] = CE.Event.handler;
                  }
              },
              unbind : 
          function(obj, act, fn, capture){
                  
          if(window.removeEventListener){
                      obj.removeEventListener(act,fn,capture 
          || false);
                  }
          else{
                      
          if(obj.evns && obj.evns[act]){
                          
          try{
                              
          delete obj.evns[act][fn.id];
                          }
          catch(e){
                              obj.evns.act[fn.id] 
          = null;
                          }
                          
          return;
                      }
                  }
              }
          };
          posted @ 2010-01-14 01:17 jacklau 閱讀(224) | 評論 (1)編輯 收藏
          1.匹配電話號碼(國內)
             (?:\(?(?:[\+0]?)[0-9]+?[\)?-])?[0-9]{3,4}(?:-?)[0-9]{7,8}(?:(?:-?)[0-9]+)?
             匹配:01012345678,010-12345678,+86-010-12345678,(86)010-1234567,(086)010-12345678 等等

          posted @ 2010-01-08 19:03 jacklau 閱讀(177) | 評論 (0)編輯 收藏
          主站蜘蛛池模板: 赣州市| 莱阳市| 宜兴市| 汉中市| 安顺市| 长寿区| 铜山县| 弥勒县| 四平市| 丘北县| 车险| 沛县| 泊头市| 太湖县| 双桥区| 罗田县| 成都市| 芦山县| 剑河县| 永定县| 万山特区| 柳河县| 沂南县| 额尔古纳市| 汤原县| 台北市| 兴安县| 余姚市| 永善县| 洛宁县| 博湖县| 微山县| 陆良县| 霍林郭勒市| 普定县| 雷波县| 满城县| 凉城县| 五河县| 旌德县| 阳西县|