2016-04-27 9 views
0

他の人がウィンドウを見ているときに、あるコンピュータから別のコンピュータに通信するアプリケーションを作成しています。たとえば、Facebookのチャットで誰かとチャットし、他の人がタブやalt +タブなどを変更したとします。相手が知っていると思います(詳細はなく、facebookウィンドウがうまくいきませんでした)。onblurとonfocusイベントでiframeを使用する

/** 
* Functions which keeps track of whether the page is the active tab 
* this reports back to the host 
*/ 
window.onblur=function(){ 
    if(conn!=null) { 
     conn.send(JSON.stringify({'type':'upd','ele':'vis','status':0})); 
    } 
    make_noise('0000'); 
}; 
window.onfocus=function(){ // when you focus the window 
    if(conn != null) { 
     conn.send(JSON.stringify({'type':'upd','ele':'vis','status':1})); 
    } 
    stop_noise('0000'); 
}; 

このすべての作品、問題なし:

これは、最終的には、簡単でした。

しかし、私もページにiframeがあります。ユーザーがiframe内にある場合には、その後のonblurイベントがトリガされ、ユーザのaltは+タブ付きのように見える、など

別のタブに行ってきました私は解決するために、これを試してみました:

window.onblur=function(){ // when you leave the window 
    if(conn != null && (document.activeElement != document.getElementById("content_frame"))) {  
      conn.send(JSON.stringify({'type':'upd','ele':'vis','status':0})); 
     } 
    } 
    make_noise('0000'); 
}; 

しかし、iframeのためウィンドウが現在アクティブかどうかにかかわらず、activeElementのままです。これにより、偽陽性が発生します。

誰もがこのことを考える方法はありますか? $(「IFRAME」)(「:フォーカス」)である。

本当にありがとうございました... IFRAMEの焦点をテストする方法として提案されたが、それはactiveElementのようにちょうど同じ働きましたが、 アレックス

+0

親とIFrameの両方が同じ起源ですか? – 11thdimension

+0

原産地はどういう意味ですか? :) –

+0

このhttps://en.wikipedia.org/wiki/Same-origin_policyを見ると、一般的には同じドメイン 'protocol:// domain:port'を意味します。 – 11thdimension

答えて

0

このようにチェックすることができます。私は自分のコードでjquery btwを使用しています。

$(window).blur(function() { 
    if ($('iframe').is(':focus')) { 
    ... 
    } else { 
    ... 
    }     
}); 
+0

uは、重複した呼び出しを避けるために、イベントをバインドおよびアンバインドすることもできます。 – kanchan

+0

これはおかげで、元の投稿では何らかの理由でこれがうまくいかないと言っていた:window.onblur = function(){\t //ウィンドウを離れるとき \t if(conn!= null){ \t \t($( 'IFRAME')(です。 ':フォーカス'))であれば{\t \t \t \t \t \t conn.send(JSON.stringify({ 'タイプ': 'UPD'、 'ELE': 'VIS' 、 'status':1})); \t \t}他{ \t \t \t conn.send(JSON.stringify({ 'タイプ': 'UPD'、 'ELE': 'VIS'、 'ステータス':0}))。 \t \t} \t} }; –

関連する問題