Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Неправильная работа Event.RESIZE в IE8 & SWFObject (http://www.flasher.ru/forum/showthread.php?t=131053)

Firexel 11.10.2009 22:21

Неправильная работа Event.RESIZE в IE8 & SWFObject
 
Всем привет. Столкнулся с такой проблемой в Internet Explorer 8 при встраивании флешки с помощью такого вот SWFObject
Код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
        <head>
                <title></title>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                <script type="text/javascript" src="swfobject.js"></script>
                <script type="text/javascript">
                        var flashvars = {};
                        var params = {};
                        params.quality = "best";
                        params.scale = "exactfit";
                        params.allowfullscreen = "true";
                        var attributes = {};
                        attributes.id = "flashContent";
                        swfobject.embedSWF("site.swf", "myAlternativeContent", "100%", "100%", "10.0.0", false, flashvars, params, attributes);
                </script>
        </head>
        <body>

                <div id="myAlternativeContent">
                        <a href="http://www.adobe.com/go/getflashplayer">
                                <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                        </a>
                </div>
        </body>
</html>

После чего в самой флешке stage.stageHeight всегда равняется 192 и при любом размере окна и хоть ты тресни! При этом stage.stageWidth исправно меняется.

Событие ресайза цепляю stage.addEventListener(Event.RESIZE, defResize);

Может кто сталкивался с подобной проблемой или знает как решить?

wvxvw 11.10.2009 23:46

params.scale = "exactfit";
При таком раскладе и не будет менятся. Нужно чтобы "noScale" был.

Firexel 11.10.2009 23:57

Поменял на "noscale". Ничего не изменилось.

Dimax4d 12.10.2009 00:01

А если DOCTYPE сменить на 4.01, заработает? У меня аналогичная проблема решалась именно так. XHTML вроде как не поддерживает height 100%

wvxvw 12.10.2009 00:11

Эрм... еще раз и по порядку, у вас вообще высота флешки не меняется, или высота визуально меняется, ни флеш считает, что она не изменилась?

Firexel 12.10.2009 00:17

Ролик, обрабатывая Event.RESIZE, сам должен подстраиваться под все пространство stage.stageWidth x stage.stageHeight, что он и делает, допустим, в хроме. В IE8 stage.stageHeight не меняется, и как следствие, ролик не масштабируется совсем.

Добавлено через 5 минут
сменил DOCTYPE на
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Ничего :(

Dimax4d 12.10.2009 00:31

Вложений: 1
Во Flex Builder 3 есть хорошая обертка под это дело, мне кажется она вашу проблему должна решить. По крайней мере у меня к ней претензий не возникает, когда работаю со stage.stageHeight

Цитата:

Сообщение от Firexel (Сообщение 857071)
В IE8 stage.stageHeight не меняется, и как следствие, ролик не масштабируется совсем.

Скорее наоборот - ролик не масштабируется, поэтому не меняется stage.stageHeight

Добавлено через 3 минуты
Код:

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />


<link rel="stylesheet" type="text/css" href="history/history.css" />


<title></title>
<script src="AC_OETags.js" language="javascript"></script>
<script src="history/history.js" language="javascript"></script>

<style>
body { margin: 0px; overflow:hidden }
</style>
<script language="JavaScript" type="text/javascript">
<!--
// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = 9;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 124;
// -----------------------------------------------------------------------------
// -->
</script>
</head>

<body scroll="no" style="background-color:#838383">
<script language="JavaScript" type="text/javascript">
<!--
// Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
var hasProductInstall = DetectFlashVer(6, 0, 65);

// Version check based upon the values defined in globals
var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);

if ( hasProductInstall && !hasRequestedVersion ) {
        // DO NOT MODIFY THE FOLLOWING FOUR LINES
        // Location visited after installation is complete if installation is required
        var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
        var MMredirectURL = window.location;
    document.title = document.title.slice(0, 47) + " - Flash Player Installation";
    var MMdoctitle = document.title;

        AC_FL_RunContent(
                "src", "playerProductInstall",
                "FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
                "width", "100%",
                "height", "100%",
                "align", "middle",
                "id", "intro",
                "quality", "high",
                "bgcolor", "#838383",
                "name", "intro",
                "allowScriptAccess","sameDomain",
                "type", "application/x-shockwave-flash",
                "pluginspage", "http://www.adobe.com/go/getflashplayer"
        );
} else if (hasRequestedVersion) {
        // if we've detected an acceptable version
        // embed the Flash Content SWF when all tests are passed
        AC_FL_RunContent(
                        "src", "intro",
                        "width", "100%",
                        "height", "100%",
                        "align", "middle",
                        "id", "intro",
                        "quality", "high",
                        "bgcolor", "#838383",
                        "name", "intro",
                        "allowScriptAccess","sameDomain",
                        "type", "application/x-shockwave-flash",
                        "pluginspage", "http://www.adobe.com/go/getflashplayer"
        );
  } else {  // flash is too old or we can't detect the plugin
    var alternateContent =
                          'Alternate content';
    document.write(alternateContent);  // insert non-flash content
  }
// -->
</script>
<noscript>
          <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
                        id="intro" width="100%" height="100%"
                        codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
                        <param name="movie" value="intro.swf" />
                        <param name="quality" value="high" />
                        <param name="bgcolor" value="#838383" />
                        <param name="allowScriptAccess" value="sameDomain" />
                        <embed src="intro.swf" quality="high" bgcolor="#838383"
                                width="100%" height="100%" name="intro" align="middle"
                                play="true"
                                loop="false"
                                quality="high"
                                allowScriptAccess="sameDomain"
                                type="application/x-shockwave-flash"
                                pluginspage="http://www.adobe.com/go/getflashplayer">
                        </embed>
        </object>
</noscript>
</body>
</html>


Firexel 12.10.2009 00:40

Да, стандартная флешевая обертка отлично работает. Проблема во взаимодействии SWFObject и IE8. Тем не менее, проблему нужно как-то решить.

wvxvw 12.10.2009 01:08

Да ну елки вы по содержанию можете ответить: когда вы изменяете размер страницы, размер флешки меняется или нет? Если да, то у вас где-то меняется stage.scaleMode с "noScale" на какой-то другой. Если нет, то проблема в вашем HTMLe. Если вам нужен HTML занимающий все окно браузера:
Код:

html, body { height:100%; }
body { margin:0; }


Firexel 12.10.2009 01:11

Вложений: 1
Вот. По-быстрому собрал примерчик.


Часовой пояс GMT +4, время: 00:56.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.