Встроенный Flash в asp.net аккордеон работает плохо

StackOverflow https://stackoverflow.com/questions/637179

  •  10-07-2019
  •  | 
  •  

Вопрос

Я использую аккордеонный расширитель инструментария ajax и замечаю, что он немного "прикольный" когда я пытаюсь вставить флэш-память в разделы контента.

Вы можете посмотреть, над чем я сейчас работаю: http://kristinsconfections.com/gallery.aspx. Как вы можете видеть, когда вы переключаете аккордеон, это немного изменчиво. Я вытягиваю слайдшоу из flickr, поэтому я не могу это контролировать. Сайт предназначен только для друга, который пытается стать пекарем, поэтому он не является приоритетным, просто очень расстраивает !! Все, что я могу сделать, используя javascript, .net или даже jquery ??

Вот точный код, который я использую на этой странице:

<cc1:Accordion ID="MyAccordion" runat="server" SelectedIndex="0"
        HeaderCssClass="accordionHeader" ContentCssClass="accordionContent"
        FadeTransitions="true" FramesPerSecond="40" TransitionDuration="250" AutoSize="None">
        <Panes>
            <cc1:AccordionPane ID="pnlCakes" runat="server">
                <Header><div ><span style="float:left;">Cakes</span></div></Header>
                <Content>
                    <object width="572" height="429" type="application/x-shockwave-flash"
                     data="http://www.flickr.com/apps/slideshow/show.swf?v=67089"> 
                    <param name="flashvars" value="&offsite=true&amp;lang=en-us&page_show_url=%2Fphotos%2F28792515%40N08%2Fsets%2F72157612640424865%2Fshow%2F&page_show_back_url=%2Fphotos%2F28792515%40N08%2Fsets%2F72157612640424865%2F&set_id=72157612640424865&jump_to=" />
                    <param name="allowFullScreen" value="true" />
                    <param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=67089" />
                    </object>
                </Content>
            </cc1:AccordionPane>
             <cc1:AccordionPane ID="pnlCookies" runat="server">
                <Header><div ><span style="float:left;">Cookies</span></div></Header>
                <Content>
                 <object width="572" height="429"  type="application/x-shockwave-flash"
                 data="http://www.flickr.com/apps/slideshow/show.swf?v=67089"> 
                <param name="flashvars" value="&offsite=true&amp;lang=en-us&page_show_url=%2Fphotos%2F28792515%40N08%2Fsets%2F72157612640405779%2Fshow%2F&page_show_back_url=%2Fphotos%2F28792515%40N08%2Fsets%2F72157612640405779%2F&set_id=72157612640405779&jump_to=" />
                <param name="allowFullScreen" value="true" />
                <param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=67089" />
                </object>
                </Content>
            </cc1:AccordionPane>
            <cc1:AccordionPane ID="pnlCupcakes" runat="server">
                <Header><div ><span style="float:left;">Cupcakes</span></div></Header>
                <Content>
                <object width="572" height="429"  type="application/x-shockwave-flash"
                 data="http://www.flickr.com/apps/slideshow/show.swf?v=67089"> 
                <param name="flashvars" value="&offsite=true&amp;lang=en-us&page_show_url=%2Fphotos%2F28792515%40N08%2Fsets%2F72157612589253131%2Fshow%2F&page_show_back_url=%2Fphotos%2F28792515%40N08%2Fsets%2F72157612589253131%2F&set_id=72157612589253131&jump_to=" />
                <param name="allowFullScreen" value="true" />
                <param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=67089" />
                </object>
                </Content>
            </cc1:AccordionPane>
        </Panes>
</cc1:Accordion>
Это было полезно?

Решение

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

Если загрузка всех фильмов Flash в скрытые элементы div приводит к низкой производительности, существует событие, в которое можно зацепиться за изменение, которое можно загрузить во Flash. Это задокументировано на странице аккордеона (и это легко сделать с помощью JQuery).

Другие советы

Кажется, это давняя ошибка в firefox, не относящаяся к любой конкретный виджет. Мои лучшие попытки:

<script type="text/javascript">
    function pageLoad() {
        var acc = $find('<%= MyAccordion.ClientID %>_AccordionExtender');
        acc.add_selectedIndexChanged(MyAccordion_SelectedIndexChanged);
    }
    function MyAccordion_SelectedIndexChanged(sender) {
        $("object").css("visibility", "hidden");
        setTimeout(
            function() { 
                $("object").eq(sender.get_SelectedIndex()).css("visibility", "visible"); 
            }, 1000);
    }
</script>
<Ол>
  • Скрыть видимость объекта, чтобы анимация аккордеона воспроизводилась через
  • Подождите 1 секунду - надеюсь, достаточно долго, чтобы закончить анимацию, но не слишком долго, чтобы было заметное отставание
  • Показать скрытый объект
  • Это устраняет мерцание, но объект флэш-памяти исчезает, пока анимация воспроизводится через

    Я протестировал его под FireFox3, IE8 и Chrome, и он действительно работает хорошо в IE (версия 8), и не так хорошо в FF3 и Chrome.

    Я нашел этот пост где-то, кто сталкивался с той же проблемой, и кажется, что установка свойства FadeTransitions на «False» исправляет это, хотя я уверен, что это не то решение, на которое вы надеялись.

    Вы пробовали в настоящее время поместить изображение предварительного просмотра в аккордеон? Затем, когда пользователь нажимает на изображение с помощью JavaScript, чтобы заменить его на Flash? Я думаю, что это выглядело бы намного лучше.

    Когда кто-то выбирает другую панель в аккордеоне (не уверен в событии для мониторинга - посмотрите в AccordionBehavior.js), вы можете удалить флэш-память, заменить ее изображением и продолжить.

    Думаю, тогда вам не придется беспокоиться о взаимодействии флэш-браузера с браузером, которое вызывает у вас проблемы.

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

    Кроме того, посмотрите, как вы встраиваете свои SWF, особенно атрибут wmode . Вот хорошая пояснительная статья, написанная здесь , Вы могли бы начать с этого. Вы можете игнорировать режимы GPU и direct , потому что я думаю, что вы не используете SWF, скомпилированный для Flash Player 10.

    И, конечно же, вы должны выгрузить флэш-ролики, которые не видны.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top