0

在我的 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&amp;swf=StrobeMediaPlayback.swf&amp;javascriptCallbackFunction=$.fn.strobemediaplayback.triggerHandler&amp;minimumFlashPlayerVersion=10.0.0&amp;expressInstallSwfUrl=expressInstall.swf&amp;autoPlay=false&amp;loop=false&amp;controlBarMode=docked&amp;poster=&amp;src=http://players.edgesuite.net/videos/big_buck_bunny/bbb_448x252.mp4&amp;useHTML5=false&amp;width=1187&amp;height=959&amp;queryString=favorFlashOverHtml5Video=true&amp;swf=StrobeMediaPlayback.swf&amp;javascriptCallbackFunction=$.fn.strobemediaplayback.triggerHandler&amp;minimumFlashPlayerVersion=10.0.0&amp;expressInstallSwfUrl=expressInstall.swf&amp;autoPlay=false&amp;loop=false&amp;controlBarMode=docked&amp;poster=&amp;src=http://players.edgesuite.net/videos/big_buck_bunny/bbb_448x252.mp4&amp;useHTML5=false&amp;width=1187&amp;height=959">
</object>

这将存在于文件hideswf-iframe.html中。

这应该可以在 Mac 上的最新版本的 Safari、Chrome 和 Firefox 以及 Windows 7 机器上的最新版本的 Chrome、Firefox 和 Internet Explorer 中工作,并且应该会失败(没有错误,但不会发生隐藏行为)在 Windows 7 机器上的 Safari 中。

可能需要注意的是,关于通过和失败的 SWF 对象,我注意到的一件事是,失败的对象都围绕视频内容,而通过的对象则没有。诚然,我测试的对象不超过六个,但这是一个巧合。:)

4

3 回答 3

1

也一直在尝试解决这个问题,没有从 safari 中找到任何文档,尝试了所有可能的 css 和 jquery 隐藏组合,它对那些持怀疑态度的人不起作用,请查看http://css-tricks .com/examples/AnythingSlider/在 safari 上浏览幻灯片,您会在 3d 幻灯片中看到错误。

于 2012-07-24T05:19:14.117 回答
0

如果您的情况是:

<div id="main">
  <iframe>
    <object.../>
  </iframe>
</div>

我建议您使用jQuery("#main").toggle(),根据我的经验,它的效果很好。

于 2012-04-13T07:43:19.017 回答
0

只需将这行 JavaScript 添加到您的页面:

 swfobject.switchOffAutoHideShow();
于 2015-11-20T09:37:26.897 回答