1

我已经用 javascript 实现了 Facebook 分享对话框,但我遇到了一致性问题。

我有一个打开对话框的按钮,当我从页面打开对话框时,它会自动出现在页面上的 iframe 中,这很棒!正是我想要的。

现在这是问题所在,我有另一个页面重定向到这个完全相同的页面,并且如果设置了 get 变量,它被设置为为 facebook 共享对话框调用完全相同的函数。它调用它,但现在它在新窗口而不是 iframe 中打开,我不知道为什么。我会从字面上关闭窗口并单击按钮,它将在 iframe 中完美地打开它。

$(document).ready(function() {
        window.fbAsyncInit = function() {
            FB.init({
                appId            : '######',
                autoLogAppEvents : true,
                xfbml            : true,
                version          : 'v3.2'
            });

            @if(isset($_GET['share']))
                facebook_share();
            @endif
        };

        (function(d, s, id){
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) {return;}
            js = d.createElement(s); js.id = id;
            js.src = "https://connect.facebook.net/en_US/all.js";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));

        $('.fb-share').click(function() {
            facebook_share();
        });
    });

    function facebook_share(){
        FB.ui({
            method: 'share',
            mobile_iframe: true,
            href: '######',
        }, function(response){
            if (response && !response.error_message) {
                success.style.display = "block";
            } else {
                error.style.display = "block";
            }
        });
    }
4

1 回答 1

0

我自己想出来了,只需在调用该函数之前设置一个超时,它就会以相同的方式运行。在最初的调用中,一切都不能完全加载。

setTimeout(facebook_share, 3000);
于 2019-02-01T05:09:04.827 回答