Unity webgl Facebook canvas 应用程序在使用登录对话框时失去焦点

Unity webgl Facebook canvas app loses focus when using login dialog

我在 Facebook 上的 iframe 应用程序(使用 Unity webgl 制作)在调用 Facebook 登录对话框(FB.LogInWithReadPermissions), or any other interaction with Facebook which brings up dialog window (FB.AppRequest 等)后失去焦点。

焦点没有返回到应用程序,所以需要点击iframe的任意位置才能看到结果,不太方便。

任何解决方法?

编辑:

快速而肮脏的解决方案,但它有效:

setInterval (
    function () {
        if (!document.hasFocus()) {
            window.focus();
        }
    },
    1000
);

其实document.hasFocus()这里不需要检查

我认为在使用 Facebok Unity SDK 时无法知道 Facebook 对话框 window 何时关闭,因为回调是在失去焦点的 WebGL 应用程序中执行的,所以直到它实际上获得了关注。

也许在 Facebook 上使用 Facebook Javascript SDK for Unity WebGL 游戏更好?

很久以前我遇到过类似的问题。我通过向 index.html 添加一个侦听器函数来解决它。如果 iframe 失去焦点并硬重置焦点,它会监听。 Have a look at onblur event.

它在 unity 5.2 上使用了 4 个: 在 c# 上的 facebook 回调:

 Application.ExternalCall("recuperaFocus");

并在 html 服务于 facebook canvas 下一个 js:

 function recuperaFocus(){
      this.focus();      
 }