分享Java快乐

我有一份快乐,分给你一些;我还是有一份快乐,你也有一份快乐。

mxj ID:javamxj
523349次访问,排名78好友0人,关注者16
javamxj的文章
原创 82 篇
翻译 0 篇
转载 0 篇
评论 720 篇
javamxj的公告

    版权声明:在此发表的有关文章均属本人javamxj原创,转摘或引用请注明出处。



联系方式:
Email:
javamxj@gmail.com

友情Blog

最近评论
linuxghs:删除configuration,eclipse不能启动了。郁闷
xinghui100:学习中
IvonXiao:谢谢博主的分享
xkpkhu:wow power leveling
xkpkhu:wow power leveling
文章分类
收藏
    相册
    有空逛逛
    java开源大全(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 JavaScript 日志工具收藏

    新一篇: 实例学习AJAX-基础1 | 旧一篇: 需要注意自动装拆箱的一个特例

        前些天,学了一下AJAX,感觉对于JavaScript的控制有些麻烦,尤其是经常使用Alert()语句来输出一些记录,真是很不方便。于是到网上搜索了一些JavaScript的Logging工具,感觉都有些小缺点,不适合自己。于是,自己干脆也写了一个Logging工具,使用起来觉得还不错。这里就介绍给大家看看。
     
         这个工具仅仅是一个js脚本文件。使用起来很方便,只要把这个脚本文件和Html文件放在同一目录下,然后使用在<Head>和</Head>中间加入如下一条语句即可:
     <script src="mxjLogger.js" type="text/javascript"></script>   
        
        这是一个简单的JavaScript的Logger工具,与Java的Log4j有些相似。 分成5个级别,由低到高分别是:debug info warn error fatal 。默认是显示并且处于debug级别记录激活状态。 快捷键是 Alt + D ,可以调出或隐藏这个工具。滚动时,它不会随滚动条而滚动。
     
        一旦引入这个js脚本,那么一共有5个方法可以在JavaScript中调用,分别是debug() info() warn() error() fatal(). 
     
        在<script></script>中调用,如下:   
    部分语句
      <script src="mxjLogger.js" type="text/javascript"></script>
     
      <script type="text/javascript">
       debug("欢迎使用 Javamxj 开发的 JavaScript Logger"); 
       debug("我的blog:http://blog.csdn.net/javamxj/")   
       info("当前时间是:" + new Date());  
     </script>
     
        也可以直接在方法中调用,如下:
    部分语句
    <button style="color:green" onclick="debug('发送 Debug 信息')" >
       发送 Debug 信息
    </button>
     
     
     
        完整的测试文件testLogger.html和脚本文件mxjLogger.js如下:

    testLogger.html

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>测试Javascript Logger</title>

    <script src="mxjLogger.js" type="text/javascript"></script>

    <script type="text/javascript">
    debug("欢迎使用 Javamxj 开发的 JavaScript Logger");
    debug("我的blog:http://blog.csdn.net/javamxj/")
    info("当前时间是:" + new Date());
    </script>


    <style type="text/css">
    <!--
    button {height:25px;width:150px}
    -->
    </style>
    </head>

    <body>
    <h1>欢迎使用 Javamxj 开发的 JavaScript Logger</h1>

    <p>分为5个级别,点击每个按钮都会显示相应的信息</p>

    <button style="color:green" onclick="debug('发送 Debug 信息')" >
    发送 Debug 信息
    </button><p>
    <button style="color:blue" onclick="info('发送 Info 信息')">
    发送 Info 信息
    </button><p>
    <button style="color:red" onclick="warn('发送 Warning 信息')">
    发送 Warning 信息
    </button><p>
    <button style="color:black" onclick="error('发送 Error 信息')">
    发送 Error 信息
    </button><p>
    <button style="color:#800000" onclick="fatal('发送 Fatal 信息')">
    发送 Fatal 信息
    </button><p>

    </body>

    <script>
    document.write(new Array(100).join("<br>"))
    </script>

    </html>
     
     

    mxjLogger.js

    /*
    这是一个简单的JavaScript的Logger工具,与Java的Log4j有些相似。
    分成5个级别,由低到高分别是:debug info warn error fatal
    默认是显示并且处于debug级别记录激活状态
    快捷键是 Alt + D ,调出这个工具
    作者:javamxj
    日期:2006年8月8日
    版本:1.0

    我的blog:http://blog.csdn.net/javamxj/
    我的email:javamxj@gmail.com
    */

    var _logger = true; // 是否激活输出
    var log_area; // 记录区域
    var n=0;


    // ------------------------------
    // 级别设置及其所对应输出的颜色
    // ------------------------------
    var levelArray = ["DEBUG","INFO","WARN","ERROR","FATAL"];
    var colorArray = ["green","blue","red","black","#800000"];


    var arr = new Array();
    for (var i=0; i<levelArray.length; i++){
     arr[i] = "<OPTION>" + levelArray[i] + "</OPTION>";
    }


    // ------------------------------
    // 用document.write写出相关的HTML语句
    // ------------------------------
    document.write('<div ID = "javamxj_log" style="position:fixed !important;position:absolute; top:310px;width:90%; z-index:2000;display:block;border-style:groove;border-width:thin;">' +
    '<div style="background-color:#EFE8E0">' +
    '<input type = "button" name = "clear" value = "清除" onclick = "$(\'status_area\').innerHTML=\'\'" />&nbsp&nbsp&nbsp&nbsp'+
    '<input type = "button" id="javamxj_run" name = "javamxj_run" value = "停止|隐藏 记录" onclick = "toggleLog()"/>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp'+
    '级别: <select id="levelSelect" onchange="changeLevel()" >' + arr.join() + "</select></div>" +
    '<div id = "status_area" name = "status_area" style="height:250px;overflow:auto;opacity:0.8; filter:alpha(opacity=80);"></div>' +
    '</div>'
    );

    // ------------------------------
    // 滚动时固定在原位置
    // ------------------------------
    document.body.onscroll=function(){
    javamxj_log.style.posTop=document.body.scrollTop+document.body.clientHeight-280
    }


    // ------------------------------
    // 增加快捷健 "Alt+D"
    // ------------------------------
    document.onkeydown = function(){
    var accessElement = document.createElement('span')
    accessElement.innerHTML = '<button style="position:absolute;top:-100px" onclick="javascript:toggleDiv()" accesskey="d"></button>'
    document.body.appendChild(accessElement);
    }

    // ------------------------------
    // 借鉴 protype,将 document.getElementById() 包装成 $() ,方便使用
    // ------------------------------
    function $(){
    var elements=new Array();
    for(var i=0;i<arguments.length;i++){
    var element=arguments[i];
    if(typeof element=='string')
    element=document.getElementById(element);

    if(arguments.length==1)
    return element;

    elements.push(element);
    }
    return elements;
    }

    // ------------------------------
    // 获得当前时间
    // ------------------------------
    function getCurrentTime(){

    var now=new Date();
    var hours=now.getHours();
    var minutes=now.getMinutes();
    var seconds=now.getSeconds()
    var timeValue=""+((hours>12)?hours-12:hours);
    if(timeValue=="0")timeValue=12;
    timeValue+=((minutes<10)?":0":":")+minutes;
    timeValue+=((seconds<10)?":0":":")+seconds;
    timeValue+=(hours>=12)?" (下午)":" (上午)";

    return timeValue;
    }

    // ------------------------------
    // 包装5个不同级别的输出方式
    // ------------------------------
    function debug(message) { logger(message, 0); }
    function info(message) { logger(message, 1); }
    function warn(message) { logger(message, 2); }
    function error(message) { logger(message, 3); }
    function fatal(message) { logger(message, 4); }

    // ------------------------------
    // 输出记录
    // ------------------------------
    function logger( message,num_level) {
    var color;
    var level;

    if (_logger) {
    color = colorArray[num_level];
    level = levelArray[num_level];
    display = (num_level >= $("levelSelect").selectedIndex ) ? "block" : "none" ;

    if(display == "block"){
    n=n+1;
    }
    bg_Color = ((n % 2) ==0)? "#FFF" : "#F6F6F6";
    $("status_area").innerHTML = '<div id=' + num_level + ' style="background-color:' + bg_Color + ';display:' + display + '"><strong style="COLOR: ' + color + '">' + level + ': ' + '</strong>' + getCurrentTime() + ": " + message + '</div>' + $("status_area").innerHTML;
    }
    }

    // ------------------------------
    // 改变记录级别
    // ------------------------------
    function changeLevel(){
    selectedLevel = $('levelSelect').selectedIndex;

    var m=0;
    var divs = $("status_area").getElementsByTagName("div");
    for(i=0;i<divs.length;i++){
    divs[i].style.display =(divs[i].id >= selectedLevel)? "block" : "none";
    if(divs[i].style.display == "block"){
    m=m+1;
    divs[i].style.backgroundColor =((m % 2) ==0) ? "#FFF" : "#F6F6F6";
    }
    }
    }

    // ------------------------------
    // 改变记录状态
    // ------------------------------
    function toggleLog() {
    var disp=$('status_area').style.display;
    if ( disp == 'none' ) {
    $('status_area').style.display = 'block';
    $('javamxj_run').value = '停止 | 隐藏 记录';
    _logger = true;
    } else {
    $('status_area').style.display = 'none';
    $('javamxj_run').value= '显示记录';
    _logger = false;
    }
    }

    function toggleDiv() {
    var e = $("javamxj_log");
    if (e) {
    e.style.display = ((e.style.display != 'block') ? 'block' : 'none');
    }
    }
     
     效果如下:
    效果图
     
     
    存在的问题:
        在IE中使用时,要注意母体Html文件引用的DOCTYPE声明如果是:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    则在IE下它会随滚动条滚动而消失。

    发表于 @ 2006年08月11日 10:16:00|评论(loading...)|编辑

    新一篇: 实例学习AJAX-基础1 | 旧一篇: 需要注意自动装拆箱的一个特例

    评论

    #jzshmyt 发表于2007-11-01 09:20:36  IP: 210.73.58.*
    自己写的javascript debug tool(简单实用)

    开发背景:
    在javascript开发过程中,如果总是使用alert的方式调试程序,在某些简单的程序中是可行的.但是在通常的项目中,通常都很复杂,这种方式已经很难满足,企业级开发的需要。
    鉴于以上初衷,本人自己动手编写了这个javascript调试工具,主要有以下特点:
    1.完全的可插入式思想,对目标程序没有任何负作用。
    2.使用方法极其简单,只需要引入一行JS代码。
    实践证明,使用该工具后,项目中调试JS程序变的极其便利,
    故推而广之,希望使用的朋友能提一些改进的意见。
    出于一些版权考虑该工具的源代码本人暂且没有公布,也对发布的版本做了一些简单的处理。

    下载地址:http://jzshmyt.spaces.live.com/
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © javamxj