emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks
          只是個最基礎的想法了。具體的實踐稍微復雜一些:
          1 如果script是用src引入的,還要用xhr或者json方式來獲得text,可能還需要搭個后臺代理。
          2 如果function是在命名空間的,可以直接遞歸for in命名空間去挖里面的public函數出來。
          3 private的函數我看就算了,私有函數應該對自己負責,我們沒有必要非去整人家的私貨。


          <HTML>
          <BODY>
          <SCRIPT LANGUAGE="JavaScript">
          <!--
          function a(x,y,z){return b(x,y)*c(z)};
          function b(x,y){return c(x)*c(y)};
          function c(x){return x+x};


          setTimeout(
          "alert(a(1,2,3))",0)
          //-->
          </SCRIPT>
          <SCRIPT LANGUAGE="JavaScript">
          <!--
          (
          function (){
              window._log
          =[];
              
          function obj2str(o){
                  
          var r = [];
                  
          if(typeof o =="string"return "\""+o.replace(/([\'\"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+"\"";
                  if(typeof o ==
          "undefined") return "undefined";
                  if(typeof o == 
          "object"){
                      if(o===null) return 
          "null";
                      else if(!o.length){
                          for(var i in o)
                              r.push(i+
          ":"+obj2str(o[i]))
                          r=
          "{"+r.join()+"}"
                      }else{
                          for(var i =0;i<o.length;i++)
                              r.push(obj2str(o[i]))
                          r=
          "["+r.join()+"]"
                      }
                      return r;
                  }
                  return o.toString();
              }

              function log(s){
                  _log.push(s);
              }
              var s=document.getElementsByTagName(
          "SCRIPT")[0].text;
              var r=/function (\w+)\(/g;
              var fns=s.match(r);
              for(var i=0;i<fns.length;i++){
                  fn=fns[i].replace(r,
          "$1")
                  if (typeof window[fn]==
          "function"){
                      window[fn]=(function(org,fn){
                          return function(){
                              log(
          "進入:"+fn+"\n調用參數:"+obj2str(arguments));
                              var r=org.apply(null,arguments);
                              log(
          "退出:"+fn+"\n返回值"+obj2str(r));
                              return r
                          }
                      })(window[fn],fn)
                  }
              }
          })()
          setTimeout(
          "alert(window._log.join('\\n\\n'))",100)
          //-->
          </SCRIPT>
          </BODY>
          </HTML>
          posted on 2011-06-16 17:38 emu 閱讀(3003) 評論(0)  編輯  收藏 所屬分類: web優化
          主站蜘蛛池模板: 安福县| 昭苏县| 开江县| 彭阳县| 武胜县| 沭阳县| 新乐市| 云浮市| 红桥区| 平潭县| 镇江市| 会同县| 碌曲县| 阳泉市| 忻州市| 漳州市| 文成县| 五原县| 河间市| 澄城县| 崇左市| 长宁区| 定兴县| 沙洋县| 桐庐县| 临夏市| 茶陵县| 永和县| 信宜市| 溧阳市| 沐川县| 阿巴嘎旗| 昂仁县| 上虞市| 南澳县| 井陉县| 金坛市| 彰武县| 盖州市| 樟树市| 公安县|