0

私たちはブラウザの違いに少し退屈していると思いますが、これは少し深刻なようです. 以下は、ほとんどそれ自体を物語っています。

$(function() {
    if (navigator.appName == "Microsoft Internet Explorer") {
        $('#imgdiv').imagefit();
    }

    $('img').bind('load', function() {
        $('#imgdiv').imagefit();
    });
});

IE10 では load イベント ハンドラーが起動しないように見えますが、ready()関数にimagefit()を配置すれば問題ありません。一方、これを Chrome で行った場合、画像はまったく表示されません。誰にもこれについて説明がありますか?私の推測では、2 つのブラウザーは異なる順序で処理を行っているか、または何かを行っているようです。これが認識されている問題であることを確認するだけで十分です。

4

1 に答える 1

2

イベントのjQuery APIドキュメントから:load

load画像で使用する場合のイベントの注意事項

開発者が .load() ショートカットを使用して解決しようとする一般的な課題は、画像 (または画像のコレクション) が完全に読み込まれたときに関数を実行することです。これには注意すべき既知の警告がいくつかあります。これらは:

  • クロスブラウザーで一貫して確実に動作しない
  • 画像の src が以前と同じ src に設定されている場合、WebKit で正しく起動しません。
  • DOM ツリーを正しくバブルアップしない
  • ブラウザのキャッシュに既に存在する画像の起動を停止することができます

最初の箇条書きは、私が想定する問題に対処しています。

関数呼び出し を$('#imgdiv').imagefit();HTML ページの下部に移動することをお勧めします。外部スクリプトの場合は、スクリプトを延期すると役立つ場合があります。

于 2013-08-13T13:59:50.893 に答える