2010-06-30 31 views
13

Tôi có thanh menu có một số mục menu phụ. Trang chủ chứa một hình ảnh động flash nằm dưới thanh trình đơn. Khi các mục menu phụ nằm trên tệp flash, tệp flash sẽ được hiển thị trên thanh trình đơn. Tôi đã thử với z-index, nhưng nó sẽ không hoạt động.Chèn div qua flash trong IE

Sự cố này chỉ xảy ra trong IE.

Bất kỳ mẹo nào?

Cảm ơn

Trả lời

25

Có Chris,

Bạn phải thiết lập một thuộc tính để flash mã nhúng

<param name="wmode" value="transparent" /> 

Điều này sẽ hoạt động

+0

Tôi có cùng sự cố với IE-11 và nó không hoạt động ... bất kỳ ý tưởng nào? –

6

Trong trường hợp bạn chèn file flash, bạn cần phải thiết lập các chế độ cửa sổ để minh bạch:

<embed src="flashfile" wmode="transparent"> 
+0

Tôi không biết nó là đơn giản. Tôi đã tìm kiếm trên mạng và có những người nói rằng điều này là không thể vì vậy tôi đã thử vận ​​may của mình trên stackoverflow và đã có câu trả lời! Rất cám ơn – seedg

2

Muneer và Tim đã đã đưa ra một câu trả lời tốt nhưng tôi muốn thêm một số infos thêm:

  • trang web của Adobe có một tài liệu về Flash OBJECT and EMBED tag attributes
  • transparentopaque giá trị này sẽ gây ra một vấn đề khả năng tiếp cận, khiến họ ẩn nội dung của đối tượng flash của bạn thành trình đọc màn hình. Chỉ có giá trị mặc định là window là OK cho trình đọc màn hình
  • z-index sẽ không thể làm gì trong trường hợp của bạn: đối tượng được plugin, trình phát flash hoặc trình thay thế quản lý và thực hiện bên ngoài trang được hiển thị bởi trình duyệt. Nó vẫn tương tác với nó (chiều rộng, chiều cao, JS) nhưng để hiển thị ...
  • Có một vấn đề tương tự với các phần tử chọn trong IE6 (và 7?) Không có giá trị z-index trên phần tử vị trí sẽ hiển thị sau đó trên lựa chọn (đây là lỗi do cách IE xem xét các yếu tố chọn)
  • bạn nên kiểm tra trên OS X và Linux, có một số vấn đề với flash trên các hệ điều hành này.
2

Có giải pháp tốt hơn cho điều này khi thêm tham số đó không phải lúc nào cũng hoạt động đặc biệt nếu sử dụng đối tượng flash trong div.

Vào cuối của trang đăng ký đối tượng flash như vậy:

<script type="text/javascript"> 
    swfobject.registerObject('FlashIdName'); 
</script> 

Sau đó gọi một hàm javascript như sau:

<script type="text/javascript"> 
    swfobject.registerObject('FlashIdName'); 
    Chk_Flash('FlashIdName'); 
</script> 

Chức năng này thực hiện như sau:

<script type="text/javascript"> 
function Chk_Flash(ToRegister) 
{ 
    document.getElementById('FlashIdName').style.visibility = 'visible'; 
    return true; 
} 
</script> 

Và tính năng này hoạt động trên tất cả các trình duyệt 100%


Bạn cũng có thể sử dụng:

document.getElementById('FlashIdName').style.visibility = 'hidden'; 

Bây giờ nếu bạn đang gọi hành động trên thẻ div như ví dụ:

document.getElementById('MyDiv').style.visibility = 'block'; 

hoặc document.getElementById ('MyDiv') phong cách. .visibility = 'none';

Những gì bạn cần làm là đầu tiên thực hiện hành động div sau đó gọi các visibilty flash trong trật tự rằng:

document.getElementById('MyDiv').style.display = 'block'; 
document.getElementById('FlashIdName').style.visibility = 'visible'; 

Thưởng thức!

1

Sử dụng các giá trị thay vì 'minh bạch':

wmode="opaque" 
1

tôi cuối cùng đã có thể tìm thấy một giải pháp mà sẽ làm việc trên cả tất cả các browers.

Nếu tôi sử dụng

<param name="wmode" value="transparent" /> 

, tôi sẽ nhận được đầu ra mong muốn trên IE nhưng không phải trên firefox và nếu tôi sử dụng

<embed wmode="transparent" ></embed> 

, tôi đã nhận ra mong muốn trong firefox nhưng không tức.

Vì vậy, tôi quyết định sử dụng cả hai hoạt động trên tất cả các trình duyệt

<!--[if IE]> 
    <param name="wmode" value="transparent" /> 
<![endif]--> 

<embed wmode="transparent" ></embed> 
Các vấn đề liên quan