如何在Windows上的Firefox中停止Flash内容闪耀jQuery UI对话框

时间:2009-03-02 15:11:14

标签: jquery windows flash internet-explorer firefox

我正在使用IE浏览器中的jQuery UI对话框。 Windows上的FF我通过对话框获得基础Flash内容。

我通过在jQuery对话框窗口上启用bgiframe选项并更改bgiframe脚本以应用于任何Windows浏览器,在IE上解决了这个问题,但是我仍然在FF上获得了闪光

请注意,我无法准确知道Flash内容的显示位置,因为它通常是用户添加到页面的Flash小部件,尽管我曾想过在显示对话框时暂时隐藏Flash内容 - 这是唯一的选择留给我?

6 个答案:

答案 0 :(得分:8)

尝试wmode=transparentwmode=opaque参数。

答案 1 :(得分:3)

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

答案 2 :(得分:2)

我曾经遇到过类似的问题。我只是隐藏了闪光灯并在对话框解除后再次显示:

<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 :(得分:1)

jquery ui对话框使用名为jquery-ui-x.x.css的css文件,其中x.x表示版本

在这个文件中你可以给.ui-dialog类溢出:auto;这将解决问题

答案 4 :(得分:1)

请注意,更改Flash动画的wmode会严重增加机器的CPU负载并降低动画速度。 Flash播放器在浏览器窗口顶部使用自己的窗口是有充分理由的。将wmode设置为不透明Flash被强制渲染到浏览器窗口中。使用wmode = transparent,它甚至必须将其渲染与现有的浏览器阶段内容合并。

我通常使用许多灯箱脚本也使用的相同技术:只要对话框可见,就切换所有Flash影片不可见。这不应该通过设置display:none来完成。如果Flash矩形不再在舞台上,结果可能会在页面的其余部分移动内容。出于同样的原因,您不应该使用jQueries hide()方法。相反,使用visibility:hidden,它仍然占据隐藏元素的空间。

这是我的方式:

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

答案 5 :(得分:0)

在对话框中使用iFrame或在触发对话框时隐藏页面上的Flash内容。