使用firefox和IE9的flash网站bug(但适用于IE6!)

时间:2011-10-19 18:18:03

标签: html flash firefox height internet-explorer-9

我的网站无法在firefox(firefox 4或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 ......

感谢

2 个答案:

答案 0 :(得分:2)

由于您使用的是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>

[编辑]
试试这个

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

答案 1 :(得分:2)

我最近遇到了同样的问题,我将高度和宽度设置为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解决方案,因为它可用,您可以使用screen.width来获取它。您可能必须将所有内容压缩到一行,但我只是间隔它以便您可以看到正在发生的事情。