Flash在jQuery对话框之上

Las*_*olt 17 html flash jquery dialog z-index

我知道很多人都问过这个问题,但我认为我的情况有点不同.

我有一个网站,我有一些广告,由于xhtml/html兼容性问题隐藏在Flash中.但是flash元素在我的jQuery对话框之上是不理想的.

有些解决方案建议将wmode设置为不透明,但我不能,因为我的广告是输出flash元素的脚本.

另一种解决方案建议在显示对话框时隐藏广告.所以我的问题是:有没有办法将Flash内容放在我的jQuery对话框后面,而它们是可见的而不需要改变flash代码?

最诚挚的问候,Lasse Espeholt

更新: 我现在以赏金重新提出这个问题.至于现在,我将每个Flash广告隐藏在"显示对话框"中.但这仍然不是最佳解决方案.所以,我正在寻找一个可以使每个Flash动画变得不透明的脚本(jQuery解决方案最好,但是一个简单的JavaScript解决方案就可以了).或者如果应该有另一个解决方案没有在这个问题中讨论过,我会很高兴听到它:)

更新2: 到目前为止,我已经制作了这个脚本:

function opaqueAllFlashMovies() {
    // Embed Flash movies
    $('embed[wmode!="opaque"]').attr('wmode', 'opaque').wrap('<div>');

    // Object flash movies with a wmode param
    $('object[classid$="-444553540000"] parem[wmode]').attr('value', 'opaque');
    // Object flash movies without a wmode param
    $('object[classid$="-444553540000"]').not('param[wmode]').append('<param name=\'wmode\' value=\'opaque\'/>').wrap('<div>');
}
Run Code Online (Sandbox Code Playgroud)

它适用于FF和Chrome,但不适用于IE.显然,.append失败了.有任何想法吗?

Lar*_*sjö 13

除非将wmode设置为opaque(或透明),否则不能将HTML放在Flash前面.

使用默认的wmode("window"),Flash Player将接管其区域中的所有渲染和用户交互.因此浏览器无法在该区域中显示任何HTML.wmode ="opaque"(或wmode ="transparent")的作用是它禁用了这种默认行为,并且在浏览器通常的渲染和分层等中集成了Flash Player区域.

但是你不需要改变任何Flash内容来设置wmode,因为它是在HTML中完成的(或通过SWFObject或其他插入Flash对象元素的脚本),所以如果你可以控制"输出flash元素的脚本"你提到的,你可以在那里处理wmode设置.