ошибка веб-сайта Flash с Firefox и IE9 (но работает на IE6!) - PullRequest
0 голосов
/ 19 октября 2011

мой сайт не работает на 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, т.е. 6 ...

спасибо

Ответы [ 2 ]

2 голосов
/ 08 ноября 2011

Недавно у меня была такая же проблема, я установил высоту и ширину на 100%, и Firefox не будет отображать, IE9 будет сжимать swf до верха высоты страницы: 100 пикселей или что-то в этом роде Я исправил это с помощью 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, чтобы получить его. Возможно, вам придется сжать все до одной строки, хотя я просто расположил ее так, чтобы вы могли видеть, что происходит.

2 голосов
/ 20 октября 2011

Поскольку вы используете 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>
...