2012-03-06 7 views
1

私はいくつかのコンテンツとボタンのようなfacebookを表示するポップアップを持っています。ポップアップはwindow.onblurで終了します。しかしFacebookのボタンをクリックすると、それはブラーイベントとして扱われ、ポップアップを好きにならずに閉じます。私に何ができる?ボタンのようなfacebookをクリックしたときのJavascriptウィンドウonblur firing

<div id="fb-root"></div> 
<script> 
(function(d, s, id) { 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (d.getElementById(id)) return; 

     js = d.createElement(s); js.id = id; 
     js.src = "http://connect.facebook.net/en_US/all.js#xfbml=1"; 

     fjs.parentNode.insertBefore(js, fjs); 
    } 

(document, 'script', 'facebook-jssdk')); 

</script> 
<div class="fb-like" data-href="http://www.google.com" data-send="false" data-width="450" data-show-faces="true" data-font="arial"></div> 

と私の最初のonblur:

<script> 
     setTimeout(setOnBlur,500); 
      function setOnBlur(){window.onblur = closeWin;} 
      function closeWin(e){window.close();} 
</script> 

どちらか私は間違って何をやっている。ここ

は、Facebookの指示に従って自分のFacebookのボタンのコードは(また、ヘッダ内のメタデータを持っている)でありますfacebookのdivタグをクリックすると、ぼかしイベントが発生するか、どうやってそれを作ることができますか? event.stopPropogation()

イベントバブリングが起こるとuがそれを処理する必要がある -

答えて

0

U'llはこれをチェックする必要があります。

+0

それはどこに処理する必要がない(わからない、これは動作します)いくつかのiframeに失われましたか...? window.close()の前に呼び出すと、ポップアップが閉じません。私はそれを後に呼び出すと、それはバブリングを停止する前に閉じます。そして、私はそれを "扱う"他の多くの場所は見当たりません。 – Nick

2

Facebook likeボタンは通常iframeにラップされます。別のiframeにフォーカスを当てると、現在のウィンドウがぼやけます。 AFAIR、ボタンがiframeではなくFacebookのような方法があります。しかし、どのようにそれを覚えていない。フォーカスを無視するために

window.onblur = function(e) { 
    var t = e.target; 
    if ((t.window == t) // this is a window 
    && (t != window)) // but some other window 
     return true; 
    closeWin(); 
} 
+0

まあ、facebookにはhtml5とiframeのオプションがあり、上記のコードはhtml5バージョンです。私は、iframeのバージョンが間違いなくonblurに当たると考えましたが、 – Nick

+0

Hmmです。そして、onblurコールバックの 'arguments [0] .target'は何ですか? – kirilloid

+0

onblurに関数(closeWin)を指定してこのコードを配置すると、次のようになります。function closeWin(e){alert(arguments [0] .target); } Object DomWindowを取得する – Nick

関連する問題