0

したがって、いくつかのファイルに関するデータ(ファイル名、ファイルサイズなど)を含むhtmlテーブルを出力するこのphpスクリプトがあります。

クラス「プレビュー」に属するタグにカーソルを合わせると、画像を表示するこのJavaScript関数があります。たとえば、ファイル名が somePic.jpg の場合、テーブル内で somePic.jpg をホバーすると、マウスの横に画像が表示されます。

これらのファイルのすべてが画像であるとは限りません。一部は .mp3 であるため、もちろん、それらにカーソルを合わせると、javascript は画像を表示できません。このケースに対処するために、(javascript 関数によって生成された) タグに alt 属性を追加しました: alt='Preview not available for this type of content.'

そして、ここに私の問題があります。うまくいくこともありますが、うまくいかないこともあります! .mp3 リンクをホバリングし始めると、alt 属性が表示され、次に画像にホバリングすると画像が表示され、次に .mp3 に再度ホバリングすると、alt が表示されなくなり、「壊れた画像」の画像が表示されることがあります。 (小さな赤い十字)が代わりに表示されます...

確かに、ファイル名を解析して mp3 であることを検出し、大文字と小文字を区別することはできますが、alt 属性がこれを達成すると考えられていました...しかし、バグがあります...

何か案が?誰かがすでにこの問題に直面していますか?

4

3 に答える 3

8

alt属性と属性を混同しているようtitleです。

このalt属性はimg、イメージをレンダリングできない場合にレンダリングする代替コンテンツを割り当てるための固有の属性です。title要素の上にカーソルを置いたときにツールチップを提供するために使用される一般的な属性です。

一部の壊れた UA のIEは画像のように扱わalttitleます。多くの混乱の根源。

于 2010-05-28T12:38:58.283 に答える
4

一般altに、エラー状態のバックストップとしてではなく、イメージが無効になっている場合に使用されます。IMO では、代替テキストがエラー状態で表示されることは望ましい機能ですが、標準では次のようにする必要はありません。

イメージ、フォーム、またはアプレットを表示できないユーザー エージェントの場合、この属性は代替テキストを指定します。

実際、ブラウザの動作はさまざまです。WebKit (Safari、Chrome) は壊れた画像アイコンのみを表示し、代替テキストは表示しません。IE は、代替テキストを画像アイコン付きのボックス内に表示しようとします (表示がうまくいかないことがよくあります)。

そのため、エラー時に表示される代替テキストに頼るべきではありません。

確かに、ファイル名を解析して、それがmp3であることを検出できました

はい、そうしなければならないと思います。ファイル名/URL拡張子は実際のファイルタイプとは何の関係もない可能性があるため、一般的なケースでも可能ではありません。ただし、すべての URL を自分で制御すると、すべての MP3 が呼び出されることを保証できる場合があります...mp3

于 2010-05-28T12:47:33.467 に答える
1

PHP にファイルタイプを検出させ、JavaScript を画像のみにインラインでレンダリングさせるのはどうですか。

また、FireBug を調べて、画像にカーソルを合わせたときに何が起こっているかを確認してください。

于 2010-05-28T12:36:00.670 に答える