読者です 読者をやめる 読者になる 読者になる

prototype.jsを一カ所だけ修正してほしい

雑感

このはてなダイアリーでも使われているJavascriptライブラリのprototype.jsですが、Firebugを使っていると一点だけ困ることがあります。
Firebugはスクリプトがエラーを起こすとそこで必ず止まるんだけど、ちゃんとキャッチされるエラーでも止まるという悪い癖があります。そして、prototype.jsには、Try.theseというエラーを起こすことを前提にした記述のためのメソッドがあります。
Try.these使ってると、予定通りのエラーが起きたとき必ずFirebugのウィンドウが開いちゃうんですよね。Try.these使わない場合には大抵、エラーが起きないかどうか確かめてから(オブジェクトの存在やメソッドの存在を確かめてから)ブラウザ依存のコードを呼ぶ場合が多いのでこの問題は起きにくいんですが。
悪いのはFirebugだとも言えるんですが、prototype.jsをたった一カ所修正してくれればほとんどのサイトで止まらなくなるんです。それがここ。

var Ajax = {
  getTransport: function() {
      return Try.these(
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
      function() {return new ActiveXObject('Microsoft.XMLHTTP')},
      function() {return new XMLHttpRequest()}
    ) || false;
  },

IE用のコード(return new ActiveXObject('Msxml2.XMLHTTP'))が先に来ているからエラーを起こして止まっちゃう。Firefox用のコード(return new XMLHttpRequest())を先にしてくれれば止まりません。ここで成功したらIEのコードには制御がいかないので。
こういうことです。

var Ajax = {
  getTransport: function() {
    return Try.these(
      function() {return new XMLHttpRequest()},
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}
    ) || false;
  },