2011-08-17 55 views
1

我有一个div中的Flash文件。该div被设置为可见(display:block;)。该div有两个姐妹div。所有三个div都由定制的jQuery选项卡控制,因此当单击另一个选项卡时,当前可见的div将变为display:none;。当该标签被重新设置为将闪光div设置为display:block时,闪存文件丢失所有存储的值(例如,在文本区域中,所有文本被重置,以及元素存储图像的路径,其被重置)。Flash上​​隐藏的变量变量

我试过其他方法,比如width:0; height:0;,这种工作方式,但由于flash文件比其他两个div大,所以它仍然可以在下面看到。所以然后我尝试overflow:hidden;但同样的问题仍然发生如上(失去价值)。

visibility:hidden不适用,因为Flash文件应该有大的空白区域。

position:absolute; top:-800px; left:-600px;失去变量。

border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px;也丢失变量。

有没有其他方法可以使用?我也有wmode=transparent

下面是我的闪光的代码嵌入:

<object wmode="transparent" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="690" height="2047" id="gdh_v3_1" align="middle"> 
      <param name="allowScriptAccess" value="sameDomain" /> 
      <param name="movie" value="gdh_v4.swf?rnd=6389" /> 
      <param name="quality" value="high" /> 
      <param name="bgcolor" value="#ffffff" /> 
      <param name="wmode" value="transparent"> 
      <param name="FlashVars" value="forcecrop=False&submitted=False&headerfile=&footerfile=&xmlfile=<?php echo $_GET['adfolder'];?>.xml&adfolder=<?php echo $_GET['adfolder'];?>&pics=gld101cc%2Ejpg%2C" /> 
      <embed wmode="transparent" src="gdh_v4.swf?rnd=6389" FlashVars=forcecrop=False&submitted=False&headerfile=&footerfile=&xmlfile=<?php echo $_GET['adfolder'];?>.xml&adfolder=<?php echo $_GET['adfolder'];?>&pics=gld101cc%2Ejpg%2C" quality="high" bgcolor="#ffffff" width="690" height="2047" name="gdh_v4" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> 
     </object> 

回答

2

我在几年前有同样的问题,我认为你需要使用两种方法; 身高:0知名度:隐藏。 Internet Explorer将保留Flash对象,即使隐藏它以避免Internet Explorer 7在渲染高度设置为0时出现错误,您可以添加异常。

这里是一个示例代码

承担oldTab被默认设置为1一个全局变量,蝾螈由点击事件设置。

if(newT != oldTab){ 
    if($.browser.msie){ 
    window.document.getElementById("t"+ oldTab).style.display = "none"; 
    window.document.getElementById("t"+ newT).style.display = "block"; 
    } 
    else{ 
    window.document.getElementById("t"+ oldTab).style.height = "0px"; 
    window.document.getElementById("t"+ oldTab).style.visibility = "hidden"; 

    window.document.getElementById("t"+ newT).style.height = "auto"; 
    window.document.getElementById("t"+ newT).style.visibility = "visible"; 
    } 
    oldTab = newT; 
} 
+0

Ah man,such a简单的解决方案还不错为什么我没有发现!非常感谢!!! – rickyduck

1

是使用共享对象(AS3)为您的选择吗?可以将变量存储在那里。

var sh:SharedObject = SharedObject.getLocal("something"); 

// set values 
sh.data.someVar = "Some value"; 

只有在这里的问题是,如果他们认为你的网站在未来的任何时间值将保持(这可能不是你的情况是好事,然后再它可能是一个真棒一个)。

+0

为答复队友喝彩,不幸的是我对AS的了解几乎不存在。如果我要将所有变量存储在SharedObject中,我怎样才能在闪存中记住它?此外,我不想玩这个Flash文件太多,这不是我的,如果我打破它,我是狗屎。我想知道是否有更多的基于CSS的答案?但是,如果你可以在上面的代码中给我启发,这将是很棒的:) – rickyduck

+0

如果你知道变化的变量是什么,你可以用** sh.data。**作为前缀,这将使它们成为你的SharedObject的数据存储。我会尝试为你考虑一个CSS解决方案。也许你可以使用JavaScript将swf移出屏幕而不是试图隐藏它? – Marty

+0

好的,我会在SharedObject之前给他的EMCA感谢上帝......我已经尝试过使用“position”和“margin”来移动屏幕 – rickyduck