Sådan stopper du Flash-indholdet gennem jQuery UI Dialog i Firefox på Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger dialogboksen jQuery UI i IE &FF på Windows. Jeg får underliggende Flash-indhold, der skinner gennem dialogboksen.


Jeg har løst dette på IE ved at aktivere indstillingen bgiframe i dialogboksen jQuery og ændre scriptet bgiframe for at gælde for alle Windows-browsere, men jeg får stadig skinnet på FF.


Bemærk, at jeg ikke kan vide præcis, hvor Flash-indholdet vil blive vist, da det normalt er Flash-widgets, som brugere har tilføjet til sider, selvom jeg har tænkt over at skjule Flash-indholdet midlertidigt, mens dialogen vises - er dette den eneste mulighed, der er tilbage til mig?

Bedste reference


Prøv parameteren wmode=transparent eller wmode=opaque.

Andre referencer 1


<object ...>
  ...
  <param name="wmode" value="opaque" />
  ...
  <embed ... wmode="opaque" ...></embed>
</object>

Andre referencer 2


Jeg havde et lignende problem en gang. Jeg gemmer blot flashen og viser den igen, når dialogen afvises:


<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");
    }

Andre referencer 3


jquery ui dialogen bruger en css fil kaldet jquery-ui-x.x.css hvor x.x angav versionen


i denne fil kan du give .ui-dialogen klasse overløb: auto; dette vil løse problemet

Andre referencer 4


Vær opmærksom på, at ændring af wmode til din Flash-animation vil øge maskinens CPU-belastning alvorligt og sænke dine animationer. Flash Player bruger sit eget vindue oven i browservinduet af god grund. Med wmode indstillet til uigennemsigtig Flash er nødt til at gøre ind i browservinduet. Med wmode=transparent skal det endda fusionere sine renderinger med eksisterende indhold på browserniveau.


Jeg bruger normalt den samme teknik, som også bruges af mange lightbox-scripts: Skift alle Flash-film usynlige, så længe dialogen er synlig. Dette skal IKKE gøres ved at indstille displayet: none. Resultatet kunne være forskydet indhold i resten af ​​siden, hvis Flash rektangel ikke længere er på scenen. Af samme grund bør du IKKE bruge jQueries hide () -metoden. Brug i stedet synlighed: skjult, som stadig optager pladsen til det skjulte element.


Her er min måde at gøre det på:


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

Andre referencer 5


Brug enten iFrame i dialogboksen eller skjul flash indhold på side, når dialogboksen er fyret.