Pergunta

Eu estou usando o Ajax Toolkit acordeão extensor e eu noto que executa um pouco "badalado" quando eu tento incorporar alguns flash nas seções de conteúdo.

Você pode ver o que eu tenho trabalhando agora em: http://kristinsconfections.com/gallery.aspx. Como você pode ver quando você alternar o acordeão é um pouco agitado. Eu estou puxando o slideshow flash do flickr, então não posso controlar isso em tudo. O site é somente para um amigo que está tentando se tornar um padeiro por isso não é alta prioridade apenas altamente frustrante !! Tudo o que posso fazer usando javascript, .net ou mesmo jquery ??

Aqui está o código exato que eu estou usando na página:

<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>
Foi útil?

Solução

I encontrar o material kit de ferramentas Ajax muito desajeitado em geral. JQuery é tão fácil de usar, tem um bom suporte cross-browser e extensibilidade que usá-lo na preferência, e eu recomendo que você faça o mesmo. Há um accordian Widget na suíte JQuery UI que deve caber a conta.

Se ter todos o Flash filmes de carregamento para os divs escondidas lhe dá mau desempenho não é um evento que você pode ligar para a mudança onde você pode carregar em Flash. Isso está documentado na página accordian (e pode ser facilmente feito com JQuery).

Outras dicas

Parece ser um bug longa data no firefox não específicas para qualquer elemento específico. Meus melhores tentativas:

<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. Ocultar a visibilidade objeto para as animações acordeão jogar através
  2. Espere 1 seg - espero que o tempo suficiente para as animações para terminar, mas não muito longo para que theres lag perceptível
  3. Mostrar o objeto escondido

Isso corrige a oscilação, mas o objeto flash irá desaparecer, enquanto as animações jogar através

Eu testei sob FireFox3, IE8 e Chrome, e ele realmente parece funcionar muito bem no IE (versão 8), e não tão bom no FF3 e Chrome.

Eu fiz encontrar este post de algum lugar que correu para o mesmo problema, e parece que as configurações do FadeTransitions propriedade para correções de 'falso', embora eu aposto que ele não é a solução que você estava esperando.

Você já tentou colocar uma imagem de visualização no accordian por enquanto? Então, quando o usuário clica sobre a imagem usando javascript para substituí-lo com o flash? Eu acho que ficaria muito melhor.

Quando seleciona a alguém um painel diferente no accordian (não tenho certeza do evento para o monitor - Procurar em AccordionBehavior.js)., Então você pode remover o flash, substituí-la por uma imagem e continuar

Eu acho que, em seguida, você não teria que se preocupar com a interação flash / navegador que está causando problemas.

Eu recomendaria utilizando o jQuery acordeão Widget , também. Eu trabalhei com ele e muito fácil de usar, peso leve, funciona em todos os navegadores e eu encontrei nenhum bug qualquer. Há um monte de peles você pode escolher para e, se o impulso vem shove, não é realmente muito de uma dor na bunda para construir a sua própria pele.

Além disso, dê uma olhada na maneira que você está embutindo seus fundos soberanos, especialmente o atributo wmode. Há um bom artigo explicativo escrito aqui , você poderia começar com isso. Você pode ignorar os modos GPU e direct, porque eu acho que você não está usando um SWF compilado para o Flash Player 10.

E, claro, você deve descarregar os filmes flash que não são visíveis.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top