帰ってきたHolyGrailとHoryGrailの区別がつかない日記

はてなブログに帰って来ました

onerrorでエラーを検出

@nitoyon IE 6 エラーになる?やべー、手元に Windows がないー。ちょっと別のマシン起動してきます。

http://twitter.com/amachang/statuses/191685642

ってのがあったのでonerrorを使ったエラーの検出方法について書いてみたいと思います。

いきなりソースコード

var err = function(a,b,c){
  var img = new Image();
  img.src = 'http://example.com/error.gif?a=' + escape(a) + '&b=' + escape(b) + '&c=' + escape(c);
  return true;
}

window.onerror = err;

用意するもの

  • 上のスクリプトをできるだけページの上部に設置
  • アクセスログを閲覧できる場所に1x1のerror.gifを用意

access_logにエラーログが落ちてきます

[07/Aug/2007:22:55:53 +0900] "GET /error.gif?a=missing%20%3B%20before%20statement&b=http%3A//holy-grail.jp/work/javascript/error/&c=23 HTTP/1.1" 304 - "http://holy-grail.jp/work/javascript/error/" "Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"

ログの内容は

a エラーの内容 missing ; before statement
b エラーが起きた場所 http://holy-grail.jp/work/javascript/error/
c エラーが発生した行 23

ってな感じです。
ログにはUserAgentも落ちるのでこれでエラー対策はばっちりですね!
ユーザにもエラーのアラートが表示されなくなるので裏側でこっそり修正とかもできるようになっちゃいます><

ちなみに元ネタは

http://www.yahoo.com/
のページの上部に

var ver="501";
var frcode="yfp-t-501";function err(a,b,c) {
var img=new Image;
img.src='http://srd.yahoo.com/hp5-v'+ver+'-err/'+escape(a)+','+escape(b)+','+escape(c)+'/*1';
return true;
}
window.onerror=err;

ってのがあります。
この辺を参考にエラー対策をしてみるのもいいんじゃないでしょうか?