firefox和IE9的flash网站bug(但可以在IE6上运行!)



我的网站不能在firefox (firefox 4或firefox 7)上运行,没有显示任何内容,甚至没有替代内容

和IE9,问题是内容被压缩在页面的顶部…(但它可以在IE6上运行!)

, HTML是:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" media="all" href="style.css" />
        <script type="text/javascript" src="jquery-1.5.1.min.js"></script>
        <script type="text/javascript" src="jq.js"></script>
        <script type="text/javascript" src="swfobject.js"></script>
        <script type="text/javascript">
            swfobject.registerObject("myId", "9.0.115", "expressInstall.swf");
        </script>
    </head>
    <body>
    <div id="flash">
    <object id="myId" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%">
        <param name="movie" value="ombre.swf" />
        <!--[if !IE]>-->
        <object type="application/x-shockwave-flash" data="ombre.swf" width="100%" height="100%">
        <!--<![endif]-->
          <p>alternative content</p>
        <!--[if !IE]>-->
        </object>
        <!--<![endif]-->
      </object>
      </div>
    </body>
    </head>
</html>

和CSS:

body {
    width:100%; height:100%; margin:0; background:white; overflow:hidden;
}

似乎是"高度"设置为100%的问题,但我还能放什么?该网站适用于chrome, safari, ie6…

谢谢

既然你正在使用swfObject,为什么你不使用它来做你的实际嵌入
您会发现下面的代码示例更符合浏览器。

<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
  function loaded() {
    var flashvars={}, params={}, attributes={}, tmp, version, width, height, container, flashObj;
    flashvars.UserId = "23061";
    params.menu = "true";
    params.quality = "high";
    params.bgcolor = "#869ca7";
    params.allowscriptaccess = "always";
    params.allownetworking = "all";
    attributes.id = "myId";
    attributes.name = "myId";
    attributes.align = "middle";
    attributes.allowscriptaccess = "always";
    attributes.allownetworking = "all";
    tmp = "expressInstall.swf";
    version = "9.0.115";
    width = "100%";
    height = "100%";
    container = "replaceMe";
    flashObj = "myId.swf";
    swfobject.embedSWF(flashObj, container, width, height, version, tmp, flashvars, params, attributes);
  }
</script>
  <body onLoad="loaded()" >
    <div id="replaceMe">Loading content.</div>
  </body>

[编辑]
Try this

<style>
html, body{
  width:100%;
  height:100%;
  margin:0;
  background:white;
  overflow:hidden;
}
</style>

我最近遇到了同样的问题,我将高度和宽度设置为100%,firefox不会显示,IE9会将swf压扁到页面顶部高度:100px或其他东西。我用JavaScript修复了它,实际上是jQuery(只是因为它可用):

从本质上讲,FF不喜欢在大小时使用%值,IE9也有不同的问题。如果添加静态值,就不会有问题。但我们不想要静态值,不是吗?

无论如何,我通过告诉JavaScript为我编写Flash标签并根据屏幕大小插入静态值来解决我的问题。

<script type="text/javascript">
    document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="' + $(window).width() + '" height="' + Math.round(($(window).width()*11)/24) + '" id="YourMovieID" align="middle">
    <param name="movie" value="YourMovie.swf"/>
    <param name="wmode" value="opaque" />
    <param name="scale" value="exactfit" />
    <!--[if !IE]>-->
    <object type="application/x-shockwave-flash" data="YourMovie.swf" width="' + $(window).width() + '" height="' + Math.round(($(window).width()*11)/24) + '" >
    <param name="movie" value="YourMovie.swf"/>
    <param name="wmode" value="opaque" />
    <param name="scale" value="exactfit" />
    <!--<![endif]-->
    <!--[if !IE]>--></object>
    <!--<![endif]-->
    </object>')
    </script>

我使用$(window).width()来获得屏幕的宽度,然后使用Math.round(($(window).width()*11)/24),因为我的电影的比例是24X11。

这是我的jQ解决方案,因为它是可用的,你可以使用屏幕。宽度得到它。你可能需要把所有内容压缩成一行,不过我只是把它们隔开了,这样你就能看到发生了什么

最新更新