javascript - 如果用户已经登录,则 Conceal FB 登录按钮

标签 javascript facebook facebook-javascript-sdk

这似乎是一个简单的问题,其他人已经发布了,但答案仍然让我困惑。具体来说,我已经反复回答过这两个问题(herehere),但我只是没有将其与我的情况联系起来。

对我来说,我想将登录按钮包装在 div 中,然后根据登录状态更改 div 可见性。 div 确实改变了可见性,但 fb 登录按钮仍然可见???

这是我在 div 中包装登录按钮的代码:

....snip....
<div id="fblogin">
    <table align="center" style="text-align:center;">
        <tr>........</tr>
        <tr>
            <td>
                <div id="fb-root"></div>
                    <span id="fb-login">
                        <div
                            class="fb-login-button"
                            onlogin="afterFbLogin()"
                            data-show-faces="false"
                            data-width="200"
                            data-max-rows="1"
                            data-scope="publish_stream">
                        </div>
                    </span>
............snip.............

这是我的 FB.Init 并检查登录状态:

window.fbAsyncInit = function () {
    FB.init({
        appId: '352810974851050',        // App ID
        channelUrl: '//www.domain.com/channel.html',
        status: true, // check login status
        cookie: true, // enable cookies 
        xfbml: true // parse page for xfbml or html5 like login button below
    });

    // Put additional init code here
    FB.getLoginStatus(function (response) {

        if (response.status === 'connected') {
            var uid = response.authResponse.userID;
            var accessToken = response.authResponse.accessToken;
            ShowFbLogin(false);
        } else if (response.status === 'not_authorized')
.........snip...................

以及ShowFbLogin函数的js代码

        function ShowFbLogin(ShowLogin)
        {
            var div_FBLogin = document.getElementById('fblogin');
            var spn_FBLogin = document.getElementById('fb-login');
            var div_FBShare = document.getElementById('fbshare');

            if (ShowLogin)
            {
                div_FBLogin.style.visibility = 'visible';
                div_FBShare.style.visibility = 'hidden';
            }
            else
            {
                div_FBLogin.style.visibility = 'collapse';
                spn_FBLogin.style.visibility = 'collapse';
                div_FBShare.style.visibility = 'visible';
            }
        }

最佳答案

尝试使用 display: none 作为 #fb-login 元素。 visibility:collapse 适用于表格元素;应该像可见性 Conceal 一样,即为不可见按钮保留空间。 visibility:collapse 也根本不适用于 IE8。

关于javascript - 如果用户已经登录,则 Conceal FB 登录按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18384369/

相关文章:

javascript - 在移动网络浏览器上自动显示软键盘

ios - Facebook 权限请求导致 iOS 应用程序崩溃

facebook - 如果用户未登录或没有 friend 连接到站点,则 Conceal facepile

facebook - 使用 facebook sdk 显示所有共同的 friend ,而不仅仅是那些拥有该应用程序的人?

javascript - 为什么 Angular 中基于 jQuery token 的集成不起作用?

javascript - appendChild 不是使用 $.confirm() 的函数

javascript - 无法使用 Excel JavaScript API 设置 NumberFormat

Facebook 点赞按钮(XFBML 版本)高度

javascript - 为什么我的变量在回调函数之外未定义?

javascript - Facebook Like 按钮在使用 jQuery 初始化时不起作用?