Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   ExternalInterface.addCallback в opera (http://www.flasher.ru/forum/showthread.php?t=158233)

raltm 17.06.2011 02:50

ExternalInterface.addCallback в opera
 
доброго времени суток

пытаюсь вызвать функцию as из javascript.
во флеше выглядит так:
Код AS3:

 
Security.allowDomain('*');
 
ExternalInterface.addCallback("ext_stop", javaScriptCall);
 
public function javaScriptCall():void{
  ...
}


в html так:
Код:

<head>
        <script type="text/javascript">
                    function stopPlayer(id) {
                        document.getElementById("player"+id).ext_stop();
                  }
        </script>
       
</head>
<body>
        <div id="flashContent">
        <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="196" height="24" id="player1" align="middle">
                <param name="movie" value="player.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <param name="play" value="true" />
                <param name="loop" value="true" />
                <param name="wmode" value="window" />
                <param name="scale" value="showall" />
                <param name="menu" value="true" />
                <param name="devicefont" value="false" />
                <param name="salign" value="" />
                <param name="allowScriptAccess" value="always" />
                <!--[if !IE]>-->
                <object type="application/x-shockwave-flash" data="player.swf" width="196" height="24">
                        <param name="movie" value="player.swf" />
                        <param name="quality" value="high" />
                        <param name="bgcolor" value="#ffffff" />
                        <param name="play" value="true" />
                        <param name="loop" value="true" />
                        <param name="wmode" value="window" />
                        <param name="scale" value="showall" />
                        <param name="menu" value="true" />
                        <param name="devicefont" value="false" />
                        <param name="salign" value="" />
                        <param name="allowScriptAccess" value="always" />
                <!--<![endif]-->
                        <a href="http://www.adobe.com/go/getflash">
                                <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Загрузить Adobe Flash Player" />
                        </a>
                <!--[if !IE]>-->
                </object>
                <!--<![endif]-->
        </object>
        </div>
</body>
</html>

в IE все прекрасно работает.
при вызове stopPlayer(1) срабатывает javaScriptCall().

в опере javaScriptCall не вызывается.
в чем может быть дело, как достучаться до этой функции?

если выводить (через алерт) document.getElementById("player"+i)
в опере выдает [object HTMLObjectElement].
в то же время метода ext_stop() у него не находит, выдает undefined

Deadly0 17.06.2011 10:52

Перед тем, как обращаться к DOM нужно проверить, что он готов к использованию:

Код:

window.load = function()
{
    window.stopPlayer = function(id)
    {
        document.getElementById("player"+id).ext_stop();
    };
};

Также я бы проверил, что флешка загрузилась тоже.
И флеш вставлять лучше через скрипт swfObject.js — будет меньше проблем.

raltm 17.06.2011 11:46

к моменту вызова все загружено

Deadly0 17.06.2011 12:46

Значит используйте swfObject.

raltm 17.06.2011 13:01

да, этим проблема и решилась. спасибо


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

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