2011-09-07 2 views
3

페이스 북 용 응용 프로그램을 작성 중입니다. 플래시로 작성된 게임이며 wmode 창이 포함되어 있습니다. Firefox 6에 문제가 발생하지만 Windows XP에만 있습니다. 사용자가 일부 페이스 북 대화 상자를 호출하면 (예 : 지불 대화 상자 또는 더 많은 크레딧 대화 상자 구매) 플래시가 사라집니다. 이것은 사용자가 알림 (상단 페이 스북 메뉴의 지구 모양 아이콘)을 클릭하고 잠시 동안 누르고있을 때 발생합니다 (그러나 이것은 그리 중요하지 않습니다).페이스 북 대화를 호출 한 후 플래시 (wmode = window)가 사라집니다.

플래시가 사라진 후에도 여전히 DOM에 <object>으로 표시됩니다. wallpost 대화 상자가 생성 될 때 발생하지 않습니다.

문제를 해결하는 방법은 무엇입니까?

우리 은 wmode을 변경할 수 없으므로이 방법은 불가능합니다.

답변

4

FB.init 설명서 : https://developers.facebook.com/docs/reference/javascript/FB.init/#flash은 응용 프로그램이 wmode = "opaque"로 작동하지 않을 경우 흰색 배경을 표시하는 것보다 더 나은 작업을 수행 할 수있는 몇 가지 옵션을 제공합니다. 가능한 어도비 플래시, W 모드 = "불투명"를 사용 캔버스 어플리케이션 facebook.com

어도비 플래시 애플리케이션 바람직하다. 우리는 하드웨어 합성을 사용하는 최신 브라우저에서 일반적으로 wmode = "opaque"를 사용하는 의 성능 저하가 없음을 확인했습니다. 그렇지 않으면 Facebook은 기본적으로 팝업 이벤트가 발생할 때 플래시 객체를 숨기고 팝업이 닫힐 때 다시 표시합니다.

당신은 W 모드 = "창"을 사용할 필요가, 당신은 FB에 hideFlashCallback 매개 변수에 함수를 제공 할 수 있습니다 (예 :도 보여주는 텍스트 또는 이런 이미지로)이 동작을 제어하려는 경우. init. hideFlashCallback은 윈도우가 열리고 닫히고 있는지를 나타내는 매개 변수로 전달 된 의 일부로 상태 필드를 취합니다. 이것은 당신이 하나를 제공 경우 무시됩니다 기본 구현이지만, 또한 당신에게 당신의 재정이 어떻게 보이는지의 아이디어를 제공 할 수 있습니다 :

function(params) { 
    var candidates = window.document.getElementsByTagName('object'); 
    for (var i = 0; i < candidates.length; i++) { 
    var elem = candidates[i]; 
    if (elem.type != "application/x-shockwave-flash") { 
     continue; 
    } 

    var good = false; 
    for (var j = 0; j < elem.childNodes.length; j++) { 
     if (elem.childNodes[j].nodeName == "PARAM" && elem.childNodes[j].name == "wmode") { 
     if (elem.childNodes[j].value != "window" && elem.childNodes[j].value != "default") { 
      good = true; 
     } 
     } 
    } 
    if (!good) { 
     if (params.state == 'opened') { 
     elem.style.old_visibility = elem.style.visibility; 
     elem.style.visibility = 'hidden'; 
     } else if (params.state == 'closed') { 
     elem.style.visibility = elem.style.old_visibility; 
     elem.style.old_visibility = ''; 
     } 
    } 
    } 
} 

참고 : stream.publish 같은 일부 UI 방법 및 stream.share는 앱을 등록하거나이 메소드를 호출하지 않고 사용할 수 있습니다. 앱 ID 을 사용하는 경우이 메소드 다음에 모든 메소드를 호출해야합니다.

+0

스크린 샷을 추가하는 등 모범 사례에 대한 최신 문서는 https://developers.facebook.com/docs/hideflashcallback/을 참조하십시오. –

관련 문제