Flash上​​的Flash丢失变量

时间:2011-08-17 08:13:20

标签: html css flash data-loss

我在div中有一个flash文件。此div设置为可见(display:block;)。 div有两个姐妹div。所有三个div都由自定义构建的jQuery选项卡控制,因此当单击另一个选项卡时,当前可见的div将变为display:none;。当重新选中选项卡以将闪烁div设置为display:block时,闪存文件将丢失其存储的所有值(例如,在文本区域中,所有文本都将重置,以及元素存储图像的路径) ,这会重置)。

我尝试了其他类似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

以下是我的flash嵌入代码:

<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 :(得分:2)

多年前我有同样的问题,我认为你需要同时使用两种方法; 高度:0 可见性:隐藏。 Internet Explorer将保持flash对象,即使您将其隐藏以避免Internet Explorer 7错误渲染,当高度设置为0时,您可以添加例外。

以下是示例代码

假设 oldTab 一个默认设置为1的全局变量, newT 由点击事件设置。

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;
}

答案 1 :(得分:1)

您是使用SharedObjects(AS3)的选项吗?可以将变量存储在那里。

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

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

这里唯一的问题是,如果他们在将来的任何时间查看您的网站,这些价值将会保留(在您的情况下这可能不是一件好事,那么这可能是一个非常棒的事情)。