Флеш-сокрытие на Facebook не работает на IE - PullRequest
3 голосов
/ 01 апреля 2012

Я работаю над приложением FB canvas, используя Flash с 3D-графикой.Я должен встроить свой SWF с параметром wmode = "direct".

В соответствии с документацией FB , при использовании wmode = "direct" FB скрывает флэш-объект при отображении всплывающего окна / диалогового окна (купить кредиты, чат, уведомления и т. д.) и после закрытия всплывающего окна он снова показывает вспышку.

В Chrome и Firefox он работает, но в IE после закрытия диалогового окна япроверил стиль элемента флеш-памяти и увидел, что видимость = видимая, но флеш-память все еще скрыта!

Я попробовал несколько подходов, все с одинаковым результатом:

  1. Не используется hideFlashCallback"на FB.init (пусть FB сделает это автоматически)
  2. Использование" hideFlashCallback ":

    function onFlashHide(params) {  
      if (params.state == 'opened') {  
        hideFlash();  
        FB.Canvas.hideFlashElement(params.elem);  
      } else if (params.state == 'closed') {  
        showFlash();  
        FB.Canvas.showFlashElement(params.elem);  
      }  
    }  
    function hideFlash() {  
      $('#flashContent').css('visibility', 'hidden');  
    }  
    function showFlash() {  
      $('#flashContent').css('visibility', 'visible');  
    }  
    

Спасибо!
Roei

ОБНОВЛЕНИЕ:
Еще одна ссылка на документацию FB: http://developers.facebook.com/docs/appsonfacebook/tutorial/#flash

Ответы [ 2 ]

1 голос
/ 08 июня 2012

У меня была такая же проблема с IE при вызове функций FB.ui.Откроется диалоговое окно Facebook, но после закрытия Flash не вернется.

Я нашел трюк, который решает эту проблему.Перед вызовом функций FB используйте JavaScript, чтобы установить фокус на другой элемент HTML.После этого объект Flash снова стал видимым, когда я закончил с диалогом Facebook.

    // IE9 has a problem where the Flash object won't regain 
// focus if it has focus when the FB UI is called.  To fix this,
// We'll redirect focus before the call.
var lFocus = document.getElementById('focus_target');
lFocus.focus();

Надеюсь, это поможет.

0 голосов
/ 06 мая 2012

Вы пытались использовать display: none; и display:block вместо visibility: hidden и visibility: visible?В прошлых проектах я заметил, что в IE иногда возникают проблемы со свойством visibility CSS ...

...