申し訳ありませんが、約束どおり、私は自分の質問に答えるつもりです。
私はこれについてかなり考えています。私は解決策を思いつきました。私はそれをコードで動作させることができませんでした(私はあまりにも頑張っていませんでした)が、理論的にはうまくいくはずです。
ウェブページが停止を決定するタイミングを決める基準を考えました。私はこれを思いついた:
- 妥当な時間が経過してもスクリプトが終了しなかった場合は、ナビゲーションがキャンセルされたとみなすことができます。
次に、body
などでjQueryイベントを発生させることができます。しかし、何が「時間の共鳴」ですか?私は、部分的にページのレンダリング時間(画像を取り込むなど)に基づいて、ユーザーのインターネットがどれほど速いかを知ることになると考えました。
var start = new Date();
var time;
$("body").load(function() {
time = new Date() - start;
...
});
乗算を係数(多分3か何か)でとapproxamate転送時間を得ること:それはやっによって得することができます。 (これは、サーバーが次のページを生成するのにどれだけ時間がかかっているかを考慮して調整する必要があります)。次に、この新しく見つかったtime*3
を次のように記述します。
$("a").click(function() { //Anything that could go to another page should filter through here
setInterval(function() {$(document).trigger("navstopped");},time*3);
}
$(document).on("navstopped") {
//Do stuff now that we assume navigation stopped.
}
を仮定する。これは実際に私たちがここでやっていることです。一貫性のないインターネット接続が可能です(1分後、遅くなります)。サーバーの負荷が矛盾する可能性があります。たぶん、このページの忍者のようなイメージを提供しているかもしれませんが、次のページを生成/提供するためには、次のリクエストがたくさんあります。だから我々は何かがナビゲーションを中断したと仮定している。しかし、我々は特定ではない。
もちろん、これはIEのonStop
イベントと組み合わせて使用できますが、これは実際に私が考えることができる唯一のクロスブラウザソリューションでした。私はそれを動作させることができませんでしたが、将来jQueryの神ができるかもしれません。
投稿前に編集:これを投稿する前から、別のアイデアがありました。より多くのブラウザはonAbort
をサポートしています。もし私たちが一度も読み込まれていない写真を持っていて、ユーザーがストップを押すと、onAbort
は解雇されますか?別のWebページがロードされていても?それはテストが必要ですが、それも動作する可能性があります。私は最初のアイデアが好きです。不安定ではありますが、それはこのcockamamieのアイデアよりも安定しており、これは悪い習慣になる可能性があることを認識しています。
JSがページにロードされる前にSTOPが発生する可能性があるため、信頼できる方法はないと思います。 –