2009-03-02 11 views
7

Używam okna dialogowego jQuery UI, w IE & FF w systemie Windows W oknie dialogowym wyświetlam ukrytą zawartość Flash.Jak zatrzymać działanie treści Flash w oknie dialogowym jQuery UI w przeglądarce Firefox w systemie Windows

Rozwiązałem to na IE, włączając opcję bgiframe w oknie dialogowym jQuery i zmieniając skrypt bgiframe, aby zastosować go do wszystkich przeglądarek Windows, jednak nadal otrzymuję blask na FF.

Pamiętaj, że nie wiem dokładnie, gdzie będą wyświetlane treści Flash, ponieważ zazwyczaj są to widżety Flash dodane przez użytkowników do stron, chociaż zastanawiałem się nad tymczasowym ukrywaniem zawartości Flash podczas wyświetlania okna dialogowego - czy to jedyna pozostawiona mi opcja?

+0

Zrobiłeś coś z oo rzędu w css/html dla zawartości flash? – Chris

Odpowiedz

8

Wypróbuj parametr wmode=transparent lub wmode=opaque.

+0

http://kb2.adobe.com/cps/155/tn_15523.html –

+1

Jeśli umieścisz wideo z youtube'a za pomocą 'iframe', możesz dodać'? Wmode = transparent' na końcu atrybutu 'src'. –

0

Użyj okna iFrame w oknie dialogowym lub ukryj zawartość flash na stronie po uruchomieniu okna dialogowego.

2

Raz spotkałem się z podobnym problemem. Ja po prostu ukryć błysk i pokazać go ponownie, gdy dialog zostaje odrzucona: dialogowego ui

<script type="text/javascript"> 
    /*notification dialog setup*/ 
     function SetupDialog() 
     { 
      $("div#divNotice").dialog(
       { autoOpen: false, 
        modal: true, 
        overlay: { opacity: 0.5, background: '#050505' }, 
        buttons: { 
           "I Agree": function(){ 
              $("#Movie").css("display","inline")//Show movie when dialog is closed 
              ....... 
             }, 
           "Close" : function(){ 
              $("#Movie").css("display","inline") //Show Movie if dialog is closed 
              $(this).dialog("close"); 
             } 
          }, 
        title: "", 
        height: 500, 
        width: 600, 
        dialogClass: 'myDialog', 
        position: 'center' 
       } 
      ); 
     } 
    </script> 
    <script type="text/javascript"> 
    function ShowDialog() 
    { 
     /*for Notice dialog */ 
     $("#divDialog").css("display","block"); 
     $("#Movie").css("display","none"); 
     $("div#divDialog").dialog("open"); 
    } 
3
<object ...> 
    ... 
    <param name="wmode" value="opaque" /> 
    ... 
    <embed ... wmode="opaque" ...></embed> 
</object> 
1

jQuery używa pliku css nazwie jquery-ui-xxcss gdzie xx wskazaną wersję

w ten plik można nadać przepełnienie klasy .ui-dialog: auto; To rozwiąże problem.

1

Należy pamiętać, że zmiana wmode animacji Flash znacznie zwiększy obciążenie procesora komputera i spowolni animacje. Odtwarzacz Flash korzysta z własnego okna na górze okna przeglądarki bez ważnego powodu. Wmode ustawiony na nieprzezroczysty Flash jest zmuszony do renderowania w oknie przeglądarki. Przy wmode = transparent, musi nawet scalić swoje renderowanie z istniejącą treścią stage przeglądarki.

Zwykle używam tej samej techniki, która jest również używana przez wiele skryptów lightbox: przełącz wszystkie filmy Flash niewidzialne, o ile okno dialogowe jest widoczne. NIE należy tego robić przez ustawienie wyświetlacza: brak. Rezultatem może być przesunięta zawartość w pozostałej części strony, jeśli prostokąt Flash nie jest już na scenie. Z tego samego powodu NIE powinieneś używać metody hide() jQueries. Zamiast tego użyj widoczności: ukryta, która nadal zajmuje przestrzeń ukrytego elementu.

Oto mój sposób to zrobić:

$('#myDialogId').dialog({ 
    open: function(){ 
     // hide any flash objects 
     $('object').css('visibility', 'hidden'); 
     // hide any flash embeds 
     $('embed').css('visibility', 'hidden'); 
    }, 
    close: function(){ 
     // show any flash objects 
     $('object').css('visibility', 'visible'); 
     // show any flash embeds 
     $('embed').css('visibility', 'visible'); 
     // 
    } 
}); 
Powiązane problemy