我知道很多人问这个问题,但我认为我的情况有点不同。
我有一个网站,我有一些广告是Flash隐藏在一个由于xhtml / html兼容性问题。但是Flash元素在我的jQuery对话框之上,这是不理想的。
一些解决方案建议将wmode设置为不透明,但是我不能因为我的广告是输出闪存元素的脚本。
另一个解决方案建议在显示对话框时隐藏广告。所以我的问题是:有没有办法把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>'); }
它在FF和Chrome中工作,但不在IE中。显然,.append失败。有任何想法吗?
解决方法
除非将wmode设置为不透明(或透明),否则无法将HTML放在Flash的前面。
使用默认的wmode(“window”),Flash Player会接管其所在的所有渲染和用户交互。因此浏览器无法在该区域显示任何HTML。 wmode =“opaque”(或wmode =“transparent”)的作用是禁用此默认行为,并将Flash Player区域整合到浏览器通常的渲染和分层等中。
但是,您不需要更改任何Flash内容来设置wmode,因为它是在HTML(或通过SWFObject或插入Flash对象元素的其他脚本)完成的,因此,如果您可以控制“输出Flash元素的脚本”你提到,你可以在那里照顾wmode设置。