2009-03-02 30 views
7

Tôi đang sử dụng hộp thoại Giao diện người dùng jQuery, trong IE & FF trên Windows Tôi nhận được nội dung Flash cơ bản chiếu qua hộp thoại.Cách ngăn chặn nội dung Flash thông qua Hộp thoại Giao diện người dùng jQuery trong Firefox trên Windows

Tôi đã giải quyết vấn đề này trên IE bằng cách bật tùy chọn bgiframe trên cửa sổ hộp thoại jQuery và thay đổi tập lệnh bgiframe để áp dụng cho bất kỳ trình duyệt cửa sổ nào, tuy nhiên tôi vẫn nhận được sự tỏa sáng trên FF. Lưu ý rằng tôi không thể biết chính xác vị trí của nội dung Flash vì nó thường là các tiện ích Flash mà người dùng đã thêm vào các trang, mặc dù tôi đã nghĩ về việc ẩn nội dung Flash tạm thời trong khi hiển thị hộp thoại - đây có phải là điều này hay không. tùy chọn duy nhất còn lại cho tôi?

+0

bạn đã làm điều gì với z-trật tự trong css của bạn/html cho nội dung flash của bạn? – Chris

Trả lời

8

Hãy thử tham số wmode=transparent hoặc wmode=opaque.

+0

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

+1

Nếu nhúng video youtube qua 'iframe', bạn có thể nối'? Wmode = transparent' vào cuối thuộc tính 'src'. –

0

Hoặc sử dụng iFrame trong hộp thoại hoặc ẩn nội dung flash trên trang khi hộp thoại được kích hoạt.

2

Tôi đã gặp phải sự cố tương tự một lần. Tôi chỉ đơn giản là giấu đèn flash và hiển thị nó một lần nữa khi hộp thoại được bác bỏ: thoại 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

các jquery sử dụng một tập tin css gọi jquery-ui-xxcss nơi xx chỉ ra phiên bản

trong này tệp bạn có thể cung cấp tràn lớp .ui-dialog: tự động; điều này sẽ giải quyết được sự cố

1

Hãy cảnh báo rằng việc thay đổi wmode của hoạt ảnh Flash sẽ làm tăng tải CPU của máy bạn một cách nghiêm trọng và làm chậm hoạt ảnh của bạn. Trình phát Flash sử dụng cửa sổ riêng của nó ở đầu cửa sổ trình duyệt vì lý do chính đáng. Với wmode được đặt thành Flash mờ thì buộc phải hiển thị trong cửa sổ trình duyệt. Với wmode = transparent nó thậm chí phải kết hợp các render của nó với nội dung giai đoạn trình duyệt hiện có.

Tôi thường sử dụng kỹ thuật tương tự cũng được sử dụng bởi nhiều tập lệnh hộp đèn: chuyển đổi tất cả phim Flash không hiển thị miễn là hộp thoại hiển thị. Điều này KHÔNG nên được thực hiện bằng cách thiết lập display: none. Kết quả có thể được chuyển nội dung trong phần còn lại của trang nếu hình chữ nhật Flash không còn trên sân khấu nữa. Vì lý do tương tự, bạn KHÔNG nên sử dụng phương thức jQueries hide(). Thay vào đó, hãy sử dụng khả năng hiển thị: ẩn mà vẫn chiếm không gian của phần tử bị ẩn.

Đây là cách tôi làm việc đó:

$('#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'); 
     // 
    } 
}); 
Các vấn đề liên quan