6

序章

DOMErrorは、DOM によって定義されたインターフェースです。

ブラウザが対応しているか確認したい。素朴なチェックは

window.DOMError !== undefined

より良いチェックは、DOMError をスローするアクションを使用して、それをチェックすることです。

err instanceof DOMError === true

質問

DOMError をスローするアクションは何ですか?

4

3 に答える 3

3

ADOMErrorは、例外に基づかないエラー状態です。DOMError両方を実装し、DOMExceptionとしてスローされる可能性があるオブジェクトを除いて、スローされることはありませんDOMException

具体的なクラスの実装は多くのDOM実装で同じであると予想されますが、既存の実装を再利用するのが困難になるバインディングを持つ言語の利点のために、仕様では分離されていDOMErrorます。たとえば、ネイティブ例外のない言語には、缶のようなプロパティにオブジェクトとして実際にダンプできない帯域外エラーシグナリングチャネルがある場合があります。DOMExceptionDOMExceptionDOMError

DOM4でドラフトされたDOMErrorは、名前文字列のみを保持する簡単なプレースホルダーです。その上に構築された仕様は、より有用な情報をカプセル化するためにいくつかのプロパティを追加することが期待されます。

現在、これはW3 File APIでエラーに使用されてFileReaderいますが、非同期インターフェイスであるため、例外をスローするのに役立つ場所はありません。File APIは、まだサブインターフェイスに追加のプロパティを追加していませんが、File APIDOMErrorとDOM4仕様の両方が、推奨ステータスに近づく前に変更される可能性があります。

DOMレベル3コアで最初に導入されたDOMErrorは、ドキュメント内のどこでエラーが発生したかに関するより詳細な情報を備えた拡張エラーインターフェイスを提供しました。これは、DOMレベル3 LSのシリアライザーおよびパーサープロセスを対象としていましたが、このdocument.normalizeDocumentメソッドを使用するためにCoreに含まれており、シリアライズ/解析サイクルもシミュレートします。

今日のブラウザは、DOM 4、DOMレベル3 LS、またはのいずれもサポートしていないため、DOMErrorはありませんnormalizeDocument。ただし、他の非ブラウザーDOM実装は次の場合があります。1つのpxdomには、DOM3インターフェイスがあります。

于 2012-02-05T17:18:29.437 に答える
1

Firefox ( source ) には実装されておらず、Chrome 17 にも実装されていません。

これに関する w3 のドキュメントは非常に曖昧です。次のステートメントを参照してください。

このインターフェイスは、例外以外の方法でエラー処理を導入したい他の仕様を対象としています。例外タイプが再利用されることが期待されます。

私が見る限り、メソッドはDOMExceptionをスローします。これは( exceptionではなく) ラベル付けされたインターフェイスであるため、実装して使用しないでください。

ちなみにこれはDOM Level 3にもありました。

編集: ThinkingStiff のコメントを読んだ後、私はそれがスローされるべきではないと確信しています。自分で投げることさえできません(Opera 11.52):

Uncaught exception: TypeError: 'DOMError' is not a constructor  
Uncaught exception: TypeError: 'DOMError' is not a function

これは、Java の DOM 実装であるDOMErrorのインターフェースでもあります。

于 2012-01-31T19:56:47.150 に答える
0

DOMErrorsは、無効なDOM要素を作成しようとしたとき、または存在しないノードを引数としてノード操作メソッドに渡したときに発生します。つまり、操作が実行できない場合は例外が発生します。

例:

document.querySelectorAll("div:foo");

これにより、div:fooが存在しない場合にDOMErrorが発生します。

于 2012-01-31T19:50:09.117 に答える