简单人生
幻想指点江山,梦中激扬文字

做网页的时候,JS一段没有写好的时候,老是会出错,弹出的窗口又难看,而且在IE里面,还死活找不到位置。。。因为IE的报错信息位置不准确,再加上,有时候一段网页是专门为IE写的,用FF或者OPERA就会报错,为避免报错信息弹窗,让客户体验更好,因此。。。找了一些资料后,发现以下解决方法比较好。

1、在代码前加入
<script language="javascript">window.onerror = function(){return true;}</script>
把这段代码放在你的head的JS引用前

2、在具体的代码前加入try catch
<script language="javascript">
      try{
            可能会出错的代码
      }
      catch(e){}
</script>


3、自己写个小函数替代(COPY 自网上)
document._error_messages = new Array();
var w;

function doError(msg,url,ln) {
 var _error_obj = {msg : msg, url : url, ln : ln};
 
 document._error_messages[document._error_messages.length] = _error_obj;
 
 str = ""
 str += "<title>Error Dialogue (WebFX)</title>"
 str += "<script>window.onload=new Function('showError()');"
 str += 'var nr=0;'
 str += 'function next() {'
 str += '   nr=Math.min(window.opener.document._error_messages.length-1,nr+1);'
 str += '   showError();'
 str += '}'
 str += 'function previous() {'
 str += '   nr=Math.max(0,nr-1);'
 str += '   showError();'
 str += '}'
 str += 'function showError() {'
 str += '   errorArray = window.opener.document._error_messages;'
 str += '   if (errorArray.length != 0 && nr >= 0 && nr < errorArray.length) {'
 str += '      url.innerText = errorArray[nr].url;'
 str += '      msg.innerText = errorArray[nr].msg;'
 str += '      ln.innerText = errorArray[nr].ln;'
 str += '   }'
 str += '}</script>'
 str += "<style>"
 str += "body {background: white; color: black; border: 10 solid navy; font-family: tahoma, arial, helvitica; font-size: 12px; margin: 0;}"
 str += "p {font-family: tahoma, arial, helvitica; font-size: 12px; margin-left: 10px; margin-right: 10px;}"
 str += "h1 {font-family: arial black; font-style: italic; margin-bottom: -15; margin-left: 10; color:navy}"
 str += "button {margin: 0; border: 1 solid #dddddd; background: #eeeeee; color: black; font-family: tahoma, arial; width: 100}"
 str += "a {color: navy;}"
 str += "a:hover {color: blue;}"
 str += "</style>"
 str += '<body scroll="no">'
 str += "<h1>Oops!</h1>"
 str += '<p>An error ocurred in the file <br><strong id="url"></strong><br>This might prevent the page from working correctly.</p>'
 str += '<p style="margin-bottom: 5;">Please report this to <a href="/contact.html#emil">EAE</a> or <a href="/contact.html#erik">Erik</a></p>'
 str += '<table style="width: 100%;" cellspacing=0 cellpadding=10><tr><td>'
 str += '<button onclick=\'if (infoArea.style.display!="block") {infoArea.style.display = "block";window.resizeTo(400,308);this.innerText="Hide Error";}else {infoArea.style.display="none";window.resizeTo(400,219);this.innerText="Show Error";}\''
 str += 'onmouseover="this.style.borderColor=\'black\'" onmouseout="this.style.borderColor=\'#dddddd\'">Show Error</button>'
 str += '</td><td align="RIGHT"><button onclick="window.close()" onmouseover="this.style.borderColor=\'black\'" onmouseout="this.style.borderColor=\'#dddddd\'">Ok</button>'
 str += '</td></tr></table>'
 str += '<div id="infoArea" style="display: none;">'
 str += '<div id="info" style="background: #eeeeee; margin: 10; margin-bottom: 0; border: 1 solid #dddddd;">'
 str += '<table>'
 str += '<tr><td><p>Message:</p></td><td><p id="msg"></p></td></tr>'
 str += '<tr><td><p>Line:</p></td><td><p id="ln"></p></td></tr>'
 str += '</table>'
 str += '</div>'
 str += '<table style="width: 100%;" cellspacing=0 cellpadding=10><tr><td>'
 str += '<button onclick="previous()" onmouseover="this.style.borderColor=\'black\'" onmouseout="this.style.borderColor=\'#dddddd\'">Previous</button>'
 str += '</td><td align=right><button onclick="next()" onmouseover="this.style.borderColor=\'black\'" onmouseout="this.style.borderColor=\'#dddddd\'">Next</button>'
 str += '</td></tr></table>'
 str += '</div>'
 str += '</body>'

 if (!w || w.closed) {
  w = window.open("","_webxf_error_win","width=390,height=190");
  var d = w.document;
  d.open();
  d.write(str);
  d.close();
  w.focus();
 }
 return true;
}

window.onerror = doError

posted on 2007-05-21 11:32 简单人生 阅读(1156) 评论(2)  编辑 收藏 引用 所属分类: Loving PHP
Comments
  • # re: 开发网页程序的时候,JS经常报错该如何处理?
    来须苍真
    Posted @ 2007-05-25 14:11
    不知道怎么说,用 try 监听是一个好的解决方案。但是您的报错代码好像不是一个合理的解决方案。  回复  更多评论   
  • # re: 开发网页程序的时候,JS经常报错该如何处理?
    简单人生
    Posted @ 2007-05-25 14:43
    报错代码也是我拷贝来的,其实如果确实需要,可以自己写。而如果是开发人员的话,用FF或者opera,报错信息就很详细了,没有必要再自己写。。。

    只是贴个方案而已  回复  更多评论   
只有注册用户登录后才能发表评论。