0

Chrome、Firefox、Safariでは、onErrorを使用して、読み込まれなかった画像を正常に削除しています。

<img src="" onerror="jQuery(this).remove();" />

これはInternetExplorer9では機能しないようですが、ページの2回目以降の更新は正常に機能し、他のブラウザーとまったく同じように機能します。IEで正しくロードされなかったdomからimgタグを削除するためのより良い方法はありますか?IEは、最初のページの読み込み時に画像が読み込まれるのを無期限に待っているようです。

4

2 に答える 2

2

jQueryが読み込まれる前に画像からエラーが返されているのではないかと思います。これにより、onerrorハンドラーが起動しますが、失敗します。

これは、jQueryで実際に行う必要はまったくありません。通常のJavascriptを使用して処理できます。このような何かがトリックを行う必要があります:

this.parentNode.removeChild(this);

これは、現在使用しているjQueryコードを直接置き換えるものです。同様の量のコードでjQueryが不要になるため、シーケンスの読み込みによって発生する可能性のある問題がすべて削除されます。

また、jQueryが存在する主な理由の1つは、このようにHTMLに埋め込まれたJSコードの必要性を取り除くのに役立つことです。そのため、元の例のようにHTMLイベント内でjQuery呼び出しが表示されるのは間違っているように見えます。 。

これにjQueryを使用する場合は、そのようにしないでください。jqueryの適切なイベント処理メカニズムを使用します。次のようになります。

jQuery('img').error(function() {
    jQuery(this).remove();
});

これは、HTMLの外部の別のスクリプトタグにあります。

ただし、読み込みシーケンスの問題と、画像の読み込みエラーがページの読み込みの非常に早い段階で発生するため、最初の解決策を使用することをお勧めします。ただし、メインページの読み込み後に画像を動的に読み込む場合は、jQueryソリューションの方が価値があります。

お役に立てば幸いです。

于 2012-07-31T20:41:23.853 に答える
1

私の意見では、これを処理する最善の方法は、サーバー側のスクリプトで保留中です。ファイルチェックを実行します。ファイルが存在する場合は、残りのファイルと一緒にロードします。存在しない場合は、レンダリングしないでください。次のファイルなどのためにスキップしてください。しかし、それは私の意見であり、ダウンロード中に何かがうまくいかないというまぐれが常にあります。私はあなたの使用に気づきます

onError

Iverは個人的にこれを使用したことはありませんが、私が時間内に見たすべての例から、それは常に使用されていました

onerror

多くのブラウザは、大文字と小文字を区別しない方法でこれらの属性を検索し、必要な方法で出力をレンダリングするように自分で修正しようとします。ただし、IEは、何を探すかについて、常に非常に気難しいものです。私は笑いのためだけに言います、それを小文字にしてみて、それが想定どおりに毎回拾わないかどうかを確認してください、もしそうなら、これはあなたの問題です、あなたのコメントに投稿された誰かのようでなければ、私たちに教えてくださいあなたが何をしようとしているのかを少し洞察してください。そうすれば、どこで何がうまくいかないのかをよりよく支援できるようになります。

于 2012-07-29T04:07:59.570 に答える