2009-03-02 10 views
7

Sto utilizzando la finestra di dialogo dell'interfaccia utente jQuery, in IE & FF su Windows Sto ottenendo il contenuto Flash sottostante che splende attraverso la finestra di dialogo.Come arrestare il contenuto Flash splendere attraverso jQuery UI Dialog in Firefox su Windows

Ho risolto questo problema su IE abilitando l'opzione bgiframe nella finestra di dialogo jQuery e modificando lo script bgiframe da applicare a qualsiasi browser Windows, tuttavia sto ancora ottenendo lo splendore su FF.

Nota che non posso sapere esattamente dove verrà mostrato il contenuto Flash in quanto è di solito i widget Flash che gli utenti hanno aggiunto alle pagine, anche se ho pensato di nascondere temporaneamente il contenuto Flash durante la visualizzazione della finestra di dialogo - è questo l'unica opzione rimasta a me?

+0

Hai fatto qualcosa con l'ordine z nel CSS/HTML per il contenuto Flash? – Chris

risposta

8

Provare il parametro wmode=transparent o wmode=opaque.

+0

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

+1

Se si incorpora un video di YouTube tramite 'iframe', è possibile aggiungere'? Wmode = transparent' alla fine dell'attributo 'src'. –

0

O utilizzare iFrame nella finestra di dialogo o nascondere i contenuti flash sulla pagina quando viene attivata la finestra di dialogo.

2

Avevo affrontato un problema simile una volta. Ho semplicemente nascondo il flash e mostrare di nuovo quando finestra è respinto: dialogo 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 utilizza un file css chiamato jquery-ui-xxcss dove xx indica la versione

in questo file puoi dare l'overflow della classe .ui-dialog: auto; questo risolverà il problema

1

Si noti che la modifica della wmode dell'animazione Flash aumenterà notevolmente il carico della CPU della macchina e rallenterà le animazioni. Flash Player utilizza una propria finestra nella parte superiore della finestra del browser per una buona ragione. Con wmode impostato su opaco Flash è costretto a eseguire il rendering nella finestra del browser. Con wmode = transparent deve anche unire i suoi rendering con il contenuto dello stage browser esistente.

Di solito utilizzo la stessa tecnica utilizzata anche da molti script lightbox: consente di rendere invisibili tutti i filmati Flash purché la finestra di dialogo sia visibile. Questo NON dovrebbe essere fatto impostando display: none. Il risultato potrebbe essere il contenuto spostato nel resto della pagina se il rettangolo Flash non è più sul palco. Per lo stesso motivo NON dovresti usare il metodo jQueries hide(). Usa invece la visibilità: nascosta che occupa ancora lo spazio dell'elemento nascosto.

Qui è il mio modo di fare:

$('#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'); 
     // 
    } 
}); 
Problemi correlati