3

ケース

  • CSSで状態が指定された<a>要素があります:active
  • mousedownJavaScriptコードでは、イベントをリッスンしevent.preventDefault()、何らかの理由で呼び出します:)
  • その結果: Firefox では、アンカーの上にマウス カーソルを移動してクリックすると、アンカーが次のように表示されません。:active
  • いくつかの Chrome/Opera/IE バージョンでもこの問題をテストしました。すべてのブラウザでアンカーが .xml であるかのように装飾されていました:active

ケースのテストは次のとおりです。 http://jsbin.com/azajex/4

質問

W3C では、何をいつ考慮しなければならないかという詳細な説明はありませんactive

しかし、FF を除くすべてのブラウザー (すべてではないかもしれません) は、最初に CSS エンジンによってマウスダウンを処理し、要素を としてレンダリングします:active。これは長い間の問題のようです。私はこのケースを FF 3.6、8.0、13.0 でテストしました。これらのバージョンはすべてまったく同じように動作します。

では、この場合のブラウザーの正しい動作は何でしょうか?

4

1 に答える 1

2

「正しい行動」はありません。これはブラウザの実装次第であり、依存するべきではありません。これは未定義の動作として知られています。ソフトウェア エンジニアリングでは、未定義の動作に依存するべきではありません。これには真のドキュメントがなく、結果を検証することもできません。

CSS は、どの要素が上記の状態 [疑似クラス: :hover、:active、および :focus] にある可能性があるか、またはどのように状態に出入りするかを定義していません。スクリプトは、要素がユーザー イベントに反応するかどうかに関係なく変更される可能性があり、デバイスや UA [ブラウザー] が異なれば、要素を指し示す方法やアクティブ化する方法も異なる場合があります。- W3C CSS セレクター

于 2012-07-13T06:00:06.253 に答える