5

jQuery BBQ:Back Button&Query Libraryプラグインを使用して、リンクがクリックされたときに動的コンテンツを取り込むページを作成しています。リンクがクリックされると、ハッシュが変更され、新しいコンテンツがプルされます(したがって、hrefをクリックする「デフォルト」アクションは無効になります)。

その部分は問題なく動作しますが、問題があります。

私の問題の例


「ホームページ」ページにDIVがあり、その中にいくつかの画像とリンクのリストがあるとします...

  • ページ1
  • 2ページ目
  • 3ページ目

画像の読み込みには時間がかかる場合がありますが、その間、ユーザーは画像が完全に読み込まれるのを待たずに[ページ1]リンクをクリックすることがよくあります。

これにより、「ホームページ」ページのコンテンツがクリアされ、「ページ1」のコンテンツが読み込まれます。それはうまくいきます。

問題は、ユーザーが「ホームページ」ページから移動した場合でも、「ホームページ」ページの画像がブラウザに読み込まれていることです。

ページが実際に変更されておらず、BBQプラグインのhashchangeハックを使用しているため、これが発生していることはわかっていますが、現在ロードされているすべての画像にhashchangeイベントで停止するようにJavaScriptで指示する方法があるかどうかを知りたいです

?? サンプルコードは次のようになります...


$(window).bind('hashchange', function () {

    //code to stop images from loading

    // now load in new HTML content

});
4

2 に答える 2

8

このソリューションを WebKit (Chrome/Safari)、Firefox、および IE でテストしたところ、うまくいくようです。

window.stop();を使用する関数を使用しました。ほとんどのブラウザーでは、ブラウザーが window.stop() をサポートしていない場合は、IE 独自の方法でそれを行います。

詳細はこちら: https://developer.mozilla.org/en/DOM/window.stop

したがって、それをサポートするブラウザー (Firefox、WebKit) では、次を使用します。

window.stop();

IE の場合:

document.execCommand("Stop", false);

ただし注意...

これは基本的に、ブラウザの「停止」ボタンを押すようなもので、画像だけでなく、現在ダウンロード中のすべてが停止します (私が望んでいたように)。

だから、中に...

$(window).bind('hashchange', function () {

});

これが私が使用した機能です...

function stopDownloads() {
    if (window.stop !== undefined) {
        window.stop();
    }
    else if (document.execCommand !== undefined) {
        document.execCommand("Stop", false);
    }   
}
于 2010-07-08T20:33:07.443 に答える
1

私はこれが不可能であるとかなり確信しています(しかし、間違っていることが証明されれば幸いです)。

その理由は、Webサイトに埋め込まれた画像によってHTTP GET、サーバーにリクエストが送信されるためです。そのリクエストが送信されると、サーバーはそのリクエストを処理して応答します。このリクエストはブラウザによって処理されます。

可能であれば、各画像を調べてその属性を無効にする必要あると思いますsrc(前述したように、リクエストはすでに送信されているため、機能しないと思います)。それか、画像の読み込みを停止する(ブラウザに依存する可能性が高い)メカニズムを呼び出すかのいずれかです。

于 2010-06-30T03:23:23.010 に答える