Окно Javascript срабатывает при нажатии кнопки «Мне нравится» на Facebook - PullRequest
1 голос
/ 07 марта 2012

У меня есть всплывающее окно, которое отображает некоторый контент и кнопку в стиле Facebook. Всплывающее окно закрывается на window.onblur. Когда я нажимаю на кнопку «Фейсбук», она воспринимается как событие размытия и закрывает всплывающее окно, даже если оно не нравится. Что я могу сделать?

Вот мой код кнопки facebook согласно инструкциям facebook (также содержит метаданные в заголовке):

<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>

Или что я делаю не так, что нажатие на тег div в facebook вызывает событие размытия, или как я могу сделать так, чтобы этого не происходило?

Ответы [ 2 ]

2 голосов
/ 07 марта 2012
Кнопка

Facebook like обычно помещается в iframe. Фокусировка другого фрейма делает текущее окно размытым. AFAIR, есть способ включить кнопку лайка в Facebook, а не в iframe. Не могу вспомнить, как это сделать.

Чтобы игнорировать фокус, потерянный для некоторого iframe (не уверен, это сработает)

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 голосов
/ 07 марта 2012

Вам нужно это проверить - event.stopPropogation()

Событие происходит, и вам нужно с этим справиться.

...