Проблема с кнопкой «Нравится» на Facebook в Windows Firefox - PullRequest
1 голос
/ 06 октября 2010

У меня есть кнопка, похожая на Facebook (версия iFrame), которая накладывается поверх полнофункционального Flash-приложения браузера. Кнопка «Мне нравится» подключается к подобным отдельным изображениям в приложении, и при отображении каждого нового изображения кнопка «Мне нравится» обновляется данными с использованием ExternalInterface.

Подобная кнопка появляется и исчезает для каждого нового изображения с помощью JQuery fadeIn () / fadeOut (), снова вызывается с ExternalInterface.

Проблема, с которой я столкнулся, заключается в том, что в Windows это, похоже, не работает, особенно в Firefox ...

CSS:

        html {
            height: 100%;
            overflow: hidden;
            min-width: 800px;
            min-height: 600px;
        }
        #flashContent {
            position: absolute;
            top: 0px;
            left: 0px;
            height: 100%;
            width: 100%;
            z-index: 1;
        }
        body {
            margin: 0;
            padding: 0;
            background-color: #000000;
        }
        #fb-like {
            position: absolute;
            bottom: 32px;
            left: 510px;
            width: 280px;
            z-index: 9999;
            display: none;
        }

fb-like - это div, содержащий iFrame, а его z-индекс равен 9999, просто чтобы быть всегда на вершине.

Вот используемый JS:

<script type="text/javascript">

    var isVisible = false;  

    function showLikeButton( visible ){         

        if( visible == true )
        {
            $('#fb-like').fadeIn( 'slow' );

            isVisible = true;

        }
        else if ( isVisible )
        {
            $('#fb-like').fadeOut( 'slow' );

            isVisible = false;

        }
    }

    var begOfUrl = "http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmywebsite.com%2fdirectory";
    var endOfUrl = "&amp;layout=button_count&amp;show_faces=false&amp;width=150&amp;action=like&amp;colorscheme=dark&amp;height=21";

    function sendIdToLikeButton( title, id ){                   
        $( '#facebook-like' ).attr( 'src', begOfUrl + "%3Fid=" + id + endOfUrl );
    }

</script>

где метод sendIdToLikeButton получает идентификатор фотографии, отправленной из Flash с использованием ExternalInterface, для воссоздания атрибута src iFrame.

И, конечно, поскольку это флэш-приложение, вот минимальный HTML:

<body>

<div id="fb-like">
        <iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fnfb.designaxiom.com/build13&amp;layout=button_count&amp;show_faces=false&amp;width=150&amp;action=like&amp;colorscheme=dark&amp;height=21" scrolling="no" frameborder="0" style="position: absolute; border:none; overflow:hidden; width:300px; height:40px;" allowTransparency="true" id="facebook-like"></iframe>
    </div>
    <div id="flashContent">
        <a href="http://www.adobe.com/go/getflashplayer">
            <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
        </a>
    </div>
</body>

Опять же, это работает везде, кроме Firefox в Windows, и я не уверен, что с этим делать. Я предполагаю, что это ошибка в CSS или Javascript где-то.

Любая помощь очень ценится.

Заранее спасибо.

Грамматика

1 Ответ

2 голосов
/ 18 октября 2010

Я наконец понял это после пары недель назад и вперед.Как оказалось, проблема заключалась в том, что iframe помещался поверх содержимого флэш-памяти.

Эта проблема была решена путем добавления параметра к вызову swfobject - установки wmode в прозрачный:

        var params = {};
        params.bgcolor = "#000000";
        params.allowfullscreen = "true";
        params.allowscriptaccess = "true";
        params.wmode = "transparent";

        var attributes = { id: "nfb", name:"nfb" };
        var swfUrl = "Runner.swf";

        swfobject.embedSWF( swfUrl, "flashContent", "100%", "100%", "10.0.0", false, flashvars, params, attributes );

Установка прозрачного wmode позволила размещать «прозрачный» iframe поверх приложения в каждом браузере.

Так что, как выясняется, это не было проблемой с кнопкой «Мне нравится в Facebook»,но с фреймами и флешем.Конечно, если вы не используете SWFObject для отображения SWF-файлов, wmode - это параметр, который можно установить в Свойства публикации во Flash при публикации SWF-файлов.

Cheers

...