首页 > 解决方案 > FB.ui 分享如何在页面中打开而不是弹出窗口

问题描述

尝试用 FB.ui 建立共享机制。问题是共享对话框打开一个弹出窗口,而不是在同一页面中打开。我试图避免弹出窗口的原因是 safari 不会在移动设备中显示弹出窗口。

<script>
        $(document).ready(function()
        {
            $.ajax(
                {
                    url: '//connect.facebook.net/en_US/sdk.js',
                    dataType: 'script',
                    cache: true,
                    success:function(script, textStatus, jqXHR)
                    {
                        FB.init({
                            appId            : 'someID',
                            autoLogAppEvents : true,
                            xfbml            : true,
                            version          : 'v3.0'
                        });

                        share();
                    }
                });
        });

        function share() {


            FB.ui(
                {
                    method: 'share',
                    href: 'https://example.com',
                    quote: 'Some description',
                    title : 'Title',
                    hashtag: null,
                    display: 'iframe'
                },
                response => {
                    window.parent.postMessage(
                        {
                            earningRule: 'fb_share',
                            action: 'shared',
                            response: response
                        }
                    );
                }
            )
        }
    </script>

有什么办法可以避免弹出窗口或解决 safari 弹出窗口阻塞问题?

提前致谢

标签: facebookfacebook-javascript-sdksharefb.ui

解决方案


主要问题是您试图在 AJAX 请求的回调函数中打开对话框。您必须FB.ui直接在鼠标交互时使用,否则会被浏览器阻止。

如果这不起作用,您可以改用 sharer.php:https ://developers.facebook.com/docs/workplace/sharing/share-dialog/?locale=de_DE#sharedialogvialink


推荐阅读