1

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

我尝试过其他方法,例如width:0; height:0;,哪种方法有效,但由于 flash 文件比其他两个 div 大,它仍然在下面可见。所以然后我尝试overflow:hidden;了,但仍然出现与上述相同的问题(丢失值)。

visibility:hidden不适用,因为闪存文件应该存在的空白区域很大。

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>
4

2 回答 2

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;
}
于 2011-08-17T10:55:54.777 回答
1

使用 SharedObjects (AS3) 是否适合您?可以将变量存储在那里。

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

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

这里唯一的问题是,如果他们在未来的任何时间查看您的网站,这些值将保持不变(在您的情况下这可能不是一件好事,那么它可能又是一件很棒的事情)。

于 2011-08-17T08:17:07.900 回答