iframe に別の Web サイトを読み込むページがあります。現在の問題は、上部のウィンドウがぼやけている場合にログを記録する必要があり、そうであればカウンターを停止する必要があることです。iframe をクリックすると、このウィンドウがフォーカスされ、ホバリングした後、トップ ウィンドウにフォーカスを戻すことができません。そのため、ブラウザで別のタブをクリックしても、このウィンドウの実際のぼかし機能は呼び出されません。私が必要としているのは、iframe がクリックされ、マウスリーブでカーソルが iframe の外に移動した後、元のフォーカスをトップ ウィンドウに戻す方法です。
私はstackoverflowで見つけたこのようなことをするためにいくつかの方法を試しましたが、私には合いません。
次のようになります。
$('iframe').mouseleave(function()
{
$(window.top).focus();
});
$(window).blur(function()
{
console.log('window blur');
});
回避策を編集しますが、現在 clearInterval が機能していません:
上記のコードに対する回答が得られなかったので、別の方法を試してみました。体をチェックしたところ、マウスが離れるとインターバルが止まりました。私にはこれで十分でした。しかし、iframe がロードされたときにカウンターを開始するのもいいので、$('iframe').load
関数内に間隔を入れようとしました。しかし、何が起こるかというと、間隔は 2 回カウントされます。1秒の間隔が必要な場合は、2秒になります。マウスが体から離れると、間隔は停止しませんが、停止する代わりに 1 秒に戻します。コードの下:
var $interval = '';
$('body').mouseleave(function()
{
clearInterval($interval);
$('.message').html('<div class="alert alert-error"><button type="button" class="close" onclick="javascript:window.opener=\'x\';window.close();">×</button>You may not navigate away from advertisements! Click <a href="">here</a> to try again.</div>');
});
$("iframe").load(function()
{
$interval = setInterval(function()
{
clearInterval($interval);
console.log('clear interval not working when inside iframe load function');
}, 1000);
});
ここで何が起こっているのか誰かが知っていることを願っています。ありがとうございました。