Открытие диалога Facebook Share в iFrame несовместимо - PullRequest
0 голосов
/ 01 февраля 2019

Я реализовал диалог Facebook Share с javascript, и у меня возникли проблемы с согласованностью.

У меня есть кнопка, чтобы открыть диалоговое окно, и когда я делаю это со страницы, она автоматически появляется в iframe на странице, котораяотлично!Именно то, что я хочу.

Теперь вот в чем проблема, у меня есть другая страница, которая перенаправляет на ту же самую страницу, и она настроена на вызов точно такой же функции для диалога общего доступа на Facebook, если установлена ​​переменная get.Он вызывает его, но теперь он открывается в новом окне, а не в 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";
            }
        });
    }

1 Ответ

0 голосов
/ 01 февраля 2019

Я понял это сам, просто установив таймаут, прежде чем вызывать функцию, заставил ее действовать так же.Все не должно быть полностью загружено при исходном вызове.

setTimeout(facebook_share, 3000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...