Facebook 支付对话框隐藏 flash 内容 E11

Facebook payment dialog hides flash content E11

我发现 Facebook 支付对话框在 IE11 中对于带有 Flash 对象的应用程序有奇怪的行为,该对象与 Context3D 一起工作。

例如,当您的 FB 应用在 HTML canvas 中作为 flash 对象(使用 { wmode: "direct" })工作时,FB SDK 会隐藏您的 flash 对象。基本上,"direct" wmode 允许应用程序将其图形直接流式传输到 "monitor"(如果简而言之)。因此,在显示任何其他内容之前,应该隐藏此块。这就是为什么 FB 对话框(通知、邀请、付款对话框等)应该隐藏 flash。

但是,如果您想在 IE11 中检查付款,您的 Flash 对象将被隐藏,并且永远不会再显示出来。

嵌入了 swfobject v2.2 的 Flash 对象:

swfobject.embedSWF(
    cfg.preloader_path,
    cfg.flashID,
    755,
    650,
    '11.0.0',
    'expressInstall.swf',
    { key: "val" },
    { "wmode" : "direct", "quality" : "high", "bgcolor" : "#ffffff" },
    { id: cfg.flashObjectId, name: cfg.flashObjectId, align: "middle" },
    function (swf) {
        if (swf.success) {
            console.log('Embedded successfully');
            // some staff here
        } else {
            console.log('Embedding failed');
        }
    });

应用程序使用 FB API v2.X

我找到了解决此问题的方法(但我认为 IE 的兼容模式不是 "clear" 修复)正在为 IE 添加兼容的元标记:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE10" />

UPD

大量测试表明,IE11 部分解决了该问题。也许这取决于 Flash 插件版本。我正在尝试查找所有依赖项。

UPD

我发现 IE 中的偶数版本的 Flash 插件可以正确处理这种情况,而不是奇数版本 (15,17,19) 将其分解。