2016-08-15 13 views
0

このページでは、外部コンテンツ(別のドメイン)でiframeを読み込みます。今までブラウザの停止ボタンまたはESCが押されたときにJSを停止する

document.getElementById('" . $hash . "').onload = function() { 
window.setTimeout('kernelInit(\'" . $hash . "\')', 5000); 
    if ($(this).height() == 0) { 
    window.location = 'stop.html'; 
    } 
    if ($(this).width() == 0) { 
    window.location = 'stop.html'; 
    } 
}; 

すべて良い: は今、次のスクリプト部分はインラインフレームをロードした後5秒間は、別のJS関数をロードします。しかし、ユーザーはブラウザの停止ボタンをクリックするかESCキーを押すことで、iframeコンテンツが完全に読み込まれるのを防ぐことができます。上記のJSチェックはiframeの内容がまったく読み込まれていないか、ユーザーが手動で読み込みを停止したかどうかをチェックすることができないため、無駄になります。

私はこのための解決策が必要であることを知っています。おそらく、X msごとにユーザーとサーバーの間の接続をチェックして作成しますか?理論的にはキャンセルされた場合(ブラウザの停止ボタンまたはESCキーによって)、JavaScriptのロードを中止する必要があります。 ここでの目標は、ナビゲーションが停止またはキャンセルされた場合、上記のスクリプトを終了しないことです。

任意のポインタ?おかげさまで

+2

なぜ別のページをiframeに読み込む必要がありますか? –

+0

広告はiframeに表示されます。ユーザーはこれらの広告を見るためのインセンティブを得る。ユーザーが広告の読み込みを停止すると、問題が発生します。 – Ivan

+0

フレームが読み込まれていても、広告が表示されているとは限りません。ユーザーはいくつかのカスタムCSSでそれらを隠すことができます。別の方法として、XHRを介してコンテンツを取得することもできます。 –

答えて

1

は私が方法がわからない、Escキーオプションブラウザのキャンセルボタンについては

$(document).keyup(function(e) { 
    if (e.keyCode == 27) { 
     alert("Esc was pressed") 
    } 
}); 

のためにそのような何かを試してみてください。 アラートを実行するイベントに変更します。

https://jsfiddle.net/aLot1mky/

関連する問題