我正在使用带有3D图形的Flash开发FB画布应用程序。我必须使用param wmode="direct"嵌入我的SWF。
根据FB文档,当使用wmode="direct"时,FB会在显示弹出窗口/对话框(购买积分、聊天、通知等)时隐藏闪光灯对象,在弹出窗口关闭后,它会再次显示闪光灯。
在Chrome和Firefox上,它是有效的,但在IE上,对话框关闭后,我检查了flash元素的样式,发现visibility=visible,但flash仍然隐藏!
我尝试了几种方法,结果都是一样的:
- 不在FB.init上使用"hideFlashCallback"(让FB来做自动)
-
使用"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
在调用FB.ui函数时,IE也遇到了同样的问题。Facebook对话框会打开,但关闭后Flash不会再出现。
我找到了一个解决这个问题的窍门。在调用FB函数之前,请使用javascript将焦点设置为不同的HTML元素。在那之后,当我完成Facebook对话框时,Flash对象再次可见。
// 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();
希望这能有所帮助。
您是否尝试过使用display: none;
和display:block
而不是visibility: hidden
和visibility: visible
?在过去的项目中,我注意到IE有时会在visibility
CSS属性方面遇到问题。。。