예를 들어, IE6은 그 기능이 그다지 풍부하지 않아 프로그램 디버깅에 많은 어려움을 가져오기 때문에 실시간 로그 출력은 프로그램이 어디에서 다루어지는지 파악하는 데 좋은 선택입니다. 고급 브라우저에서도 필요한 작업인데, 해당 비즈니스 코드가 실행되었는지 확인하는 것이 프로그램을 디버깅하는 것보다 훨씬 빠르고 쉽습니다. .
위 코드:
(function(){
var 캐시 = [];
var el = null;
this.__debugLine = 1;
function parseObjToStr(obj){
if (obj.constructor == String){
return obj.toString();
}
var ret = []
for(var o in obj){
if(typeof obj [o]!="function")
ret.push(o ":" obj[o])
}
return ret.join(",")
}
this.assert = 함수(플래그,msg){
msg = {"번호":1,"문자열":1,"부울":1,"함수":1,"정의되지 않음":1}[typeof msg ]?msg:parseObjToStr(msg);
//Log.getInstance().debug(msg);
return;
var bgColor = this.__debugLine%2==0?"배경색: #F8F8F8":"배경색:#ffffff";
msg = flag=="debug"?String.format('
',
bgColor,this.__debugLine,"#333333",flag,msg):msg;
if(flag.constructor!=String)
msg = String.format('
',
bgColor,this.__debugLine,flag?"green":"red",flag?"PASS ":"FAIL ",msg);
this.__debugLine ;
if(cache!=null){
캐시[cache.length] = msg;
}
else{
el.innerHTML = msg;
}
}
function applyStyle(el,style){
for(var pro in style){
el.style[pro] = style[pro];
}
}
addEvent(window,"load",function(){
return;
el = document.createElement("div");
var elStyle ={BackgroundColor :"#ffffff",color:"#333333",border:"1px solid #dcdada",borderLeft:"0px solid #6CE26C",borderRight:"0px solid #6CE26C"
,lineHeight:"25px",textAlign :"left",listStyleType :"none",margin:"0px",maxHeight:"200px",overflow:"auto"}
var head = document.createElement("div")
var headStyle ={배경색상:"#fef5c5",lineHeight:"25px"};
head.innerHTML = "
调试信息控system台
";
var Wrap = document.createElement("div");
var WrapStyle ={overflow:"hidden", backgroundColor:"#ffffff ",색상:"#333333",경계:"1px 단색 #C0C0C0","글꼴 크기":"12px","여백":"5px", 위치:"고정",왼쪽:"0px",하단:"0px ",width:"97%"};
var foot = document.createElement("div");
var footStyle ={padding:"0",textAlign:"left"};
foot.innerHTML = ">>><입력 유형 = 'text' 값='' id='console_eval' 스타일='margin:0;width:90%;border:none;line-height :25px;높이:25px;텍스트 들여쓰기:10px;'/>";
applyStyle(wrap,wrapStyle);
applyStyle(head,headStyle);
applyStyle(el,elStyle);
applyStyle(발,발스타일);
wrap.appendChild(머리);
wrap.appendChild(el);
wrap.appendChild(발);
document.body.appendChild(wrap);
el.innerHTML = 캐시.조인("");
캐시 = null;
함수 토글(){
if(!this.hide){
el.style.display = "none";
foot.style.display = "없음";
wrap.style.width = "200px";
this.hide = true;
}
else{
el.style.display = "";
foot.style.display = "";
wrap.style.width = "98%";
this.hide = false;
}
}
head.onclick = function(){
toggle.call(this);
}
head.onclick();
document.getElementById("console_eval").onkeydown = function(e){
e = e||window.event;
if(e.keyCode==13){
try{
eval.call(window,String.format("assert('debug',{0})",this.value));
}
catch(e){
assert("debug",e.message);
}
el.scrollTop = el.scrollHeight;
}
}
});
})();
상면 代码调用也相当的简单
assert("debug","调试信息");
해당 로그가 페이지에 나타납니다.
코드의 이 로그 출력 부분은 Jquery 작성자의 단위 테스트 모듈에서 가져왔습니다.