使用show和hide方法时停止重新加载flash文件

时间:2009-10-19 05:25:05

标签: javascript jquery flash

我有一个网页,其中嵌入了一个flash文件。该flash文件正在进行一个包含4个问题的测验。当用户回答第一个问题时,将显示第二个问题。这个flash嵌入在一个名为div的div中divFlashcontent.Now我想隐藏并显示inbetween之间的测验.Ex:当用户点击一个按钮(“暂停”)时,我想隐藏测验。当他点击“继续”按钮时,我想继续(显示)测验。我正在使用jquery show()方法和hide方法。但问题是,当我调用show方法时,Flash内容再次被加载(从头开始显示测验)。它没有显示我们点击暂停按钮的阶段。我怎么解决这个问题?我希望flash能够处于隐藏的同一阶段

4 个答案:

答案 0 :(得分:9)

内部$.hide()方法会对您的元素执行css:display:none;。这将导致闪存每次重新加载。我建议以不同的方式隐藏你的闪存,因为它对这个css属性的反应很差。

这是一个插件,可以通过将元素放在屏幕上来隐藏元素。这并不适用于所有情况,但如果适用于您,则非常有用。

要添加的CSS:

.flashHide {
  position:absolute;
  left:-99999px;
}

要添加的插件:

(function($){ 
  var hideClassName = 'flashHide'; 
  $.fn.extend({ 
    flashHide: function() { 
      return this.each(function(){ 
        $(this).addClass(hideClassName); 
      }); 
    }, 
    flashShow: function() { 
      return this.each(function(){ 
        $(this).removeClass(hideClassName); 
      }); 
    } 
  }); 
})(jQuery);

然后你会像这样使用它:

$('div#flashContainer').flashHide();
$('div#flashContainer').flashShow();

答案 1 :(得分:1)

我知道这是一个旧线程,但我想为那些寻求不需要更改现有JS代码的人发布一个简单的解决方案。在我的例子中,我有一个现有的Tabset组件,它创建了新的标签并动态加载嵌入SWF的html。

IMO,处理此问题的最简单方法是在SWF周围放置一个iframe包装器 - 然后在显示/隐藏Div容器时不会关闭/重新加载。

要解决此问题,您只需插入一个简单的html包装文件。

旧路:

主要应用 - > HTML加载器 - > SWF文件

新方式:

主要应用 - > iframe loader - > HTML加载器 - > SWF文件

简单示例:

<iframe src="/stuff/swfContainer.html" style="width:100%;height:100%;border:0px;">
</iframe>

然后在swfContainer.html里面做这样的事情:

<html>
    <head>
        <style>
            body {
                margin:0px;
            }
        </style>
    </head>
    <body>
        <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
                id="MySwf" width="100%" height="100%"
                codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
            <param name="movie" value="/stuff/mySwf.swf" />
            <param name="quality" value="high" />
            <param name="allowScriptAccess" value="sameDomain" />
            <embed src="/stuff/mySwf.swf" quality="high"
                   width="100%" height="100%" name="MySwf" align="middle"
                   play="true"
                   loop="true"
                   quality="high"
                   allowscriptaccess="sameDomain"
                   type="application/x-shockwave-flash"
                   pluginspage="http://www.adobe.com/go/getflashplayer">
            </embed>
        </object>
    </body>
</html>

这只是一个简单的代码示例,因为您可能希望使用swfobject来加载SWF,但我会将其留给您。

答案 2 :(得分:0)

你有很多选择,但最好的方法是将flash代码添加到容器eq #hiddeflash中,在修改后的代码中。您还需要使用叠加z-index和postion:

/*1*/
visibility:hidden!important;

/*1*/
position:absolute;
left:-300%;

/*3*/   
width:0;
height:0;

/*4*/
visibility:hidden!important;

/*5*/
display:none

答案 3 :(得分:0)

在Firefox和Chrome上为我工作的唯一解决方案是flash容器上的这些css代码:

如果你想&#34;删除&#34;从文档中闪现(有点像display:none):

width:0;
height:0;

如果你只想隐藏没有&#34的元素;删除&#34;来自文件:

visibility: hidden

职位提示不适用于Chrome