javascript-log教程

來源:互聯網
上載者:User
//----------------------------------開發背景----------------------------------------------//
在javascript開發過程中,如果總是使用alert的方式偵錯工具,很難滿足企業級開發的需要。  
比如ajax項目中,存在一個3000行左右JS檔案,其中存在各種自訂的javascript對象。
開發的過程中,總是需要在js程式執行到某個關鍵點的時候,監視自訂對象的值或狀態,
判斷執行結果是否是預期的樣子.
alert的方式存在以下兩個明顯的缺點:  
1.假如一次執行中有n個關鍵點的值都想隨時監視,使用alert您就不的不點夠n次確認,
- 給開發人員的感覺是很不連貫也不直觀,很難流暢發現隱藏很深的問題。  
2.用於調試的alert語句,在發布的時候必須刪除掉,等有朝一日需要再次調試的時候,
- 您就不得不回憶之前的關鍵點,分別加上alert,艱難的調試。  

鑒於以上需求,本著簡單實用的原則,自己動手編寫了這個javascript調試工具,全部程式只有10kb左右。
使用該工具之後,以上兩個問題,變得迎刃而解。您或許會發現,IE下調試javascript程式變的便利。  
該工具主要有以下特點:  
1.完全的可插入式思想,對目標程式沒有任何負作用。  
2.使用方法簡單,方便,只需要引入一行JS代碼。  

//----------------------------------使用方法---------------------------------------------//
  
步驟1.將類似於下面這樣的一行script標籤加入到您的目標頁面(JSP,ASP,HTML,PHP等)中

<SCRIPT language=javascript src="debugInner.js"></script>  

關於script標籤參數的說明:
/**
-------------------------------------------
[String]@param -- url  
-------------------------------------------
將url指向的網頁的body.innerHTML加入到targetpage div中
[初始化時]時可以設定

例:
    url="http://www.baidu.com"
    url="http://www.126.com"
    url="http://www.sina.com.cn"
    ...
-------------------------------------------
[Boolean]@param -- debug  
-------------------------------------------
用來控制是否開啟javascript的log功能
[初始化時]時可以設定

例:
    debug = true (DEFAULT)
    debug = false

-------------------------------------------
[Boolean]@param -- showtime
-------------------------------------------
用來控制是否在每條log資訊前顯示目前時間
[初始化]或[運行時]均可以設定

例:
    showtime = false (DEFAULT)
    showtime = true

-------------------------------------------
[String]@param -- local
-------------------------------------------
設定介面的語言
[初始化]或[運行時]均可以設定

例:
    local = "CN"  
    local = "EN" (DEFAULT)
         
-------------------------------------------
[String]@param -- src
-------------------------------------------
設定debugInner.js的路徑
[初始化]時可以設定

例:
    src = "D:/jslog/debugInner.js"
    src = "../javascriptlog-tool/debugInner.js"
    src = "http://localhost:8080/myproject/debugInner.js"
    ...
--------------------------------------------------
*/

步驟2.測試代碼如下:  
<!--TEST begin-->  
<script>  
    function test(){  
        var head = document.getElementsByTagName('HEAD').item(0);  
        $Log.loginfo(null,"red");//null  
        $Log.loginfo(1/3,"red");//number  
        $Log.loginfo(1==2,"red");//boolean  
        $Log.loginfo(test,"blue");//function  
        $Log.loginfo("hello world!","red");//string  
        $Log.loginfo(head);//object  
    }  
</script>  
<input type="button" value="TEST" >  
<!--TEST end-->
項目龐大的時候,需要總是在程式中保留一些調試資訊,必要的時候進行調試。  
所以,能夠讓關鍵點的資訊隨時列印出來也是很重要的,同時保證在Release之後,
對目標指令碼執行效能沒有任何影響是必須要考慮的問題。  
本工具提供的print介面是:jslog(msg,color);//msg:資訊 color:資訊的顏色
如果release的時候,你希望將"步驟2"加入到目標程式中的script標籤刪除,您也可以
選擇在您的程式中重構一個類似於下面的方法,名字隨意.比如:  
function $out(message,color){
     $Log.loginfo(message,color);
}
統一使用自己的定義的方法也可以,比如:  
function test(){  
    $out(null,"red");//null  
    $out(1/3,"red");//number  
    $out(1==2,"red");//boolean  
    $out(test,"blue");//function  
    $out("hello world!","red");//string  
}  
不過通常來說Release的時候將debug開關設定為:debug=false,不需要刪除目標程式中的調試代碼,對目標JS程式執行效能無任何影響;需要再次調試時,只需要將debug開關設定為:debug=true 即可.

//----------------------------------最新下載---------------------------------------//
下載: http://public.box.net/jzshmyt
//----------------------------------更新履曆---------------------------------------//
附加說明:
1.jslog中,對的內部事件進行統一管理.
-內測階段,留了一個測試"取消事件註冊"的介面-通過雙擊console 可以調用
2.console上方連結的說明:
- [移動控制台]:可以移動控制台或改變控制台的寬度
- [增大高度]/[減小高度]:可以根據需要調整控制台的高度
- MaxHeight:螢幕高度,MinHeight:100px
- [清除資訊]:清除控制台中的資訊
- [顯示/隱藏時刻]:可以在運行時設定是否顯示輸出log時的時刻
3.document的onscroll事件發生時,只有在console不在可見範圍內時才響應.
4.快速鍵[ctrl+shift+s],再console中顯示當前使用中的元素的HTML代碼
5.該工具所有功能只在IE下測試通過.

2008/02/14更新:
1.加入效能測試組件,支援嵌套調用,可參照example.htm中的應用
/* performance testing */
  $PF.begin();
  $PF.end(message,color);//default color is red
2.代碼重構,處理重複載入相關的問題.

2008/04/01更新:
控制台摺疊

技術說明:
1.javascript物件導向編程思想,進行嚴謹的對象封裝.通過組件的松耦合設計,實現組件間($Log,$AjaxUrl,$Performance)的可插接性.
2.採用了先進的DeanEdwards事件模型,並對它進行豐富,封裝工具的所有內部事件,使得對已經註冊的事件(包括匿名事件)進行統一管理成為可能.
3.不直接在閉包函數中引用dom元素,避免IE記憶體流失.重複載入等問題.
4.提供了一種用戶端指令碼實現多語言的思路.
5.在<script src=..></script>標籤中,加入自訂參數,使得指令碼載入參數變為可配置.並在運行時動態載入CSS.
6.在對象內部構建了_msgCached,確保了,即便是在頁面未初始化完成的狀況下,log也可以被正確記錄.
7.控制台拖拽,控制台高度控制,資訊清除,時間輸出選擇,捲軸事件處理,快速鍵查就看使用中的元素HTML,時間format擴充....
8.Ajax方式的URL網站解碼組件.
9.用戶端指令碼執行效能測試組件.


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.