gaggitのブログ

コーディング、ガジェット、TIPS関連、FX

Firefoxのデバッグに出力されるNS_ERROR_FAILUREを調査してみた

FirefoxからXMLHTTPRequestのsendメソッド使用時に出るNS_ERROR_FAILUREをいろいろな観点から調査してみました。このエラーは、IEでは出力されないので、Firefox固有のエラーだと分かります。オープンソースなので、まずは、ソースから追っていき、どのような条件で出力されるか、みてまました。Mozillaのサイトにソースがあります。ソースは、こちらです。

このソース内をNS_ERROR_FAILUREで検索すると、25件ヒット。規格に則った条件で、このエラーを出力していると推定していたのですが、いろんな意味で、使用しているんですね。この時点でソースから、追うのはあきらめました。次にMDN(Mozilla Developer Network)のXMLHTTPRequest内容デバッグの動作から。MDNのXMLHTTPRequestの内容でちょっと気になったのは、「open()」の項で記載されている以下の注釈です。

註: 既にアクティブなリクエストがある状況 (open() または openRequest() が既に呼び出された状況) で、このメソッドを呼び出した場合、abort() を呼び出すのと等価となります。」

XMLHTTPRequest処理をURIを変えて、再帰的に関数で呼び出して繰返し処理しているので、うっかりopenのまま、同じURIで二度、コールしてしまうと、abortした後に、send処理をしていることになり、エラーとなります。明示的にsend後にabort処理をいれることにより、openが二度、呼びだされることもなく、タイトルのエラーがなくなりました。

今日もがじがじっと~♪