在我的 HTML 页面上,我有<div>
一个<iframe>
,它引用另一个页面,其中包含一个 Flash SWF 对象。如果我设置任何这些:
display:none;
visibility:hidden;
opacity:0;
filter:alpha(opacity=0);
在<div>
包裹 <iframe>
的 the 上,SWF 对象有时仍然清晰可见,而<div>
and<iframe>
则按预期消失。
奇怪的是它有时确实有效,具体取决于我使用的 SWF 对象。
预期效果出现在我的 Mac 上的所有最新浏览器和我的 Windows 7 机器上,除了Safari。
编辑
下面是一些说明问题的示例代码:
<button id="tryit" type="button">Try It</button>
<div id="test">
<iframe src="hideswf-iframe.html" width="770" height="610" frameborder="0"></iframe>
</div>
<script type="text/javascript">
var test = document.getElementById("test"),
tryit = document.getElementById("tryit");
tryit.addEventListener( "click", hideAndSeek, false );
function hideAndSeek(e) {
var style = test.style;
style.opacity = (style.opacity == 1 || style.opacity == "") ? 0 : 1;
}
</script>
以及作为豚鼠的示例 SWF 对象:
<object type="application/x-shockwave-flash" id="strobemediaplayback" data="StrobeMediaPlayback.swf" width="743" height="600" style="visibility: visible; ">
<param name="allowFullScreen" value="true">
<param name="wmode" value="direct">
<param name="flashvars" value="favorFlashOverHtml5Video=true&swf=StrobeMediaPlayback.swf&javascriptCallbackFunction=$.fn.strobemediaplayback.triggerHandler&minimumFlashPlayerVersion=10.0.0&expressInstallSwfUrl=expressInstall.swf&autoPlay=false&loop=false&controlBarMode=docked&poster=&src=http://players.edgesuite.net/videos/big_buck_bunny/bbb_448x252.mp4&useHTML5=false&width=1187&height=959&queryString=favorFlashOverHtml5Video=true&swf=StrobeMediaPlayback.swf&javascriptCallbackFunction=$.fn.strobemediaplayback.triggerHandler&minimumFlashPlayerVersion=10.0.0&expressInstallSwfUrl=expressInstall.swf&autoPlay=false&loop=false&controlBarMode=docked&poster=&src=http://players.edgesuite.net/videos/big_buck_bunny/bbb_448x252.mp4&useHTML5=false&width=1187&height=959">
</object>
这将存在于文件hideswf-iframe.html中。
这应该可以在 Mac 上的最新版本的 Safari、Chrome 和 Firefox 以及 Windows 7 机器上的最新版本的 Chrome、Firefox 和 Internet Explorer 中工作,并且应该会失败(没有错误,但不会发生隐藏行为)在 Windows 7 机器上的 Safari 中。
可能需要注意的是,关于通过和失败的 SWF 对象,我注意到的一件事是,失败的对象都围绕视频内容,而通过的对象则没有。诚然,我测试的对象不超过六个,但这是一个巧合。:)