dom:loaded
プロトタイプがイベントや AJAX ハンドラーでエラー メッセージを抑制する理由がわかりません。
次の HTML が与えられた場合:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Conforming XHTML 1.1 Template</title>
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript">
document.observe('dom:loaded', function() {
console.log('domready');
console.log(idontexist);
});
</script>
</head>
<body>
</body>
</html>
domready イベントが発生し、コンソールにログが表示されますが、エラーの兆候はまったくありません。console.log(idontexist);
行をハンドラーの外に移動すると、
idontexist が定義されていません
コンソールのエラー。「クリック」などの他のイベントハンドラーでエラーメッセージが表示されるのは少し奇妙だと思いますdom:loaded
。この問題があるのは だけのようです。
同じことが AJAX ハンドラーにも当てはまります。
new Ajax.Request('/', {
method: 'get',
onComplete: function(r) {
console.log('xhr complete');
alert(youwontseeme);
}
});
エラーは表示されません。これはprototype.js 1.6.1にあり、ドキュメントでこの動作の兆候を見つけることも、これらのハンドラーでエラーレポートを有効にする方法も見つけることができません.
FireBug のデバッガーでコードをステップ実行しようとしましたが、dom:loaded
ハンドラーで不足している変数に遭遇すると、53 行目の K という名前の関数にジャンプするようです。
K: function(x) { return x }
しかし、どのように?なんで?いつ?そこに try/catch ブロックが表示されません。プログラム フローはどのように終了しますか?
ハンドラーを try/catch ブロックに詰め込むことでエラーを表示できることはわかっていますdom:ready
が、これはあまり快適なオプションではありません。AJAX 呼び出しのグローバル onException ハンドラーを登録する場合も同様です。
エラーを抑制するのはなぜですか?誰かが以前にこれに遭遇しましたか?