2011-01-07 5 views
0

をサポートしていない、私はタグに、次のコードを持っていますsilentErrorHandler()は効果がないと思います。エラーはページに表示されます。これは正しいです?エラーが表示されている理由がわからないためです。 は、質問の2番目の部分はこれです:
エラーがジャバスクリプト:オブジェクトが私のJSPページでは、このプロパティまたはメソッド

Webpage error details 

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; AskTbFXTV5/5.9.1.14019) 
Timestamp: Fri, 7 Jan 2011 21:26:23 UTC 


Message: Object doesn't support this property or method 
Line: 613 
Char: 1 
Code: 0 
URI: http://localhost:9080/Claris/static/js/common/common.js 

され、最終的に、ライン613個の状態

document.captureEvents(Event.MOUSEUP); 

は、IE8にエラーがあります。 MozillaとIE7上で正常に動作します。 提案が非常に役に立ちます

答えて

1

エラーは、エラーの抑制を設定する前にロードされているスクリプトファイル内の行を指しています。

common.jsを含める前に入れておくと効果があります。

あなたは実際にエラーを見つけて修正するか、または例外がでない場合はtry/catchでラップしてください。実際にはの問題です。

IEのdocumentにはdocument.captureEventsというプロパティ/メソッドがないので、あなたの場合(IEを使用して)エラーが発生します。

+0

ありがとうございました。しかし、IE7ではどのように動作しますか? document.captureEventsがIEのプロパティ/メソッドではない場合 – Victor

+0

IE8標準モードで実行していますか?そうであれば、それは "より厳密な"モードで動作しているかもしれません。IE7は、 "互換性の理由"のためにそれを静かに呑み込むかもしれません。また、この行は、IE7で実行されないコードに分類されるかもしれません(そのコードを確認するには完全なコードが必要です)。http://pastebin.comにドロップしてリンクすることができます我々はそこでそれをデバッグすることができます。 – scunliffe

+1

新しいIE8では、次のことができます:document.onmouseup = someFunction;何もせずに:document.captureEvents(Event.MOUSEUP);正しい? – Victor

3

どのようにIE7で動作しますか?

captureEvents()は、常に疑わしいNetscape 4時代からの不快で信頼性の低いイベントインターフェイスであり、何のためにも使用すべきではありません。新しいバージョンのIEとFirefoxはそれをサポートしなくなりました。あなたのスクリプトにかなり深刻な更新が必要なように聞こえます。

エラーシンクを追加することも非常に悪い考えです。カーペットの下であなたのエラーを掃除することは、あなたのエラーを発見する仕事をより困難にし、通常のユーザーには影響しません(JSエラーのためのレポートを開かないというブラウザのデフォルト設定があるため)。

新しいIE8では、を実行することなくdocument.onmouseup = someFunction;を実行できますか?

はい、それは「キャプチャ」ではなく「バブリング」を使用しています。この場合、イベントは依然として子孫要素で発生し、ドキュメントにヒットするまで各先祖を介して 'バブル'します。

「キャプチャ」の考え方は、祖先要素(ドキュメント)が子孫要素がイベントの通知を全く受け取らないようにすることができるということです。イベントの取り込みは実際には必要ではなく、さまざまなブラウザで異なるため、苦労します。

IEはsetCapture()メソッドを使用します。最近のブラウザでは、W3C DOM Eventsモデルを使用し、addEventListener()の第3引数としてtrueを渡します(onclickなどに関数を割り当てるDOM 0イベントモデルでは機能しません)。 captureEvents()は、古代のNetscapeでどのように行われたかでした。他の古いブラウザーやニッチブラウザーには、イベントキャプチャーの手段が全くありません。

一般的には、イベントキャプチャを避けることをおすすめします。スクリプトが実際にそれを必要としていることを確認しますおそらくそうではありません:Netscape 4(retch)上で動作するように意図されたスクリプトであれば、Netscapeイベントモデルのいくつかの壊れた部分が正しく動作しなかったため、キャプチャを必要としなくてもcaptureEvents()を使用している可能性があります泡立つ。

関連する問題