2009-03-02 9 views
7

WindowsのIE & FFでjQuery UIダイアログボックスを使用しています。ダイアログボックスでFlashコンテンツが輝いています。Flashコンテンツを停止する方法Windows上のFirefoxでjQuery UIダイアログを開く

jQueryダイアログウィンドウでbgiframeオプションを有効にして、bgiframeスクリプトを任意のWindowsブラウザに適用するように変更することでIEでこれを解決しましたが、まだFFで輝きを得ています。

ダイアログボックスを表示している間にFlashコンテンツを一時的に隠すことは考えましたが、通常はユーザーがページに追加したFlashウィジェットであるため、Flashコンテンツがどこに表示されるかはわかりません私に残された唯一のオプションは?

+0

あなたのFlashコンテンツのためのあなたのCSS/HTMLでのzオーダーで何もしていますか? – Chris

答えて

8

wmode=transparentまたはwmode=opaqueパラメータを試してください。

+0

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

+1

iframe経由でYouTube動画を埋め込むと、 '?wmode = transparent'を' src'属性の末尾に追加できます。 –

0

ダイアログボックスでiFrameを使用するか、ダイアログボックスが表示されたときにページのFlashコンテンツを非表示にします。

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
<object ...> 
    ... 
    <param name="wmode" value="opaque" /> 
    ... 
    <embed ... wmode="opaque" ...></embed> 
</object> 
1

jqueryのUIダイアログがxxは、この中にバージョン

を示したjqueryの-UI-xxcssと呼ばれるCSSファイルを使用していますファイルに.ui-dialogクラスのオーバーフローを与えることができます:auto;これで問題は解決されます

1

Flashアニメーションのwmodeを変更すると、マシンのCPU負荷が大幅に増加し、アニメーションが遅くなることに注意してください。 Flash Playerは、適切な理由でブラウザウィンドウの上に独自のウィンドウを使用します。 wmodeをopaqueに設定すると、Flashはブラウザウィンドウに強制的にレンダリングされます。 wmode = transparentでは、既存のブラウザのステージコンテンツとレンダリングをマージする必要があります。

多くのライトスクリプトでも使用されているのと同じテクニックを使用します。ダイアログが表示されている限り、すべてのFlashムービーを非表示に切り替えます。これは、display:noneを設定することによって行うべきではありません。フラッシュ矩形がステージ上にない場合、結果はページの残りの部分でシフトされる可能性があります。同じ理由から、jQueryの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'); 
     // 
    } 
}); 
関連する問題