Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   SWFobject + fscommand + IE (http://www.flasher.ru/forum/showthread.php?t=121060)

rxcoder 06.02.2009 15:29

SWFobject + fscommand + IE
 
Здравствуйте, может подскажете, в чем у меня ошибка.
Проблема собственно вот в чем:
1. Вставляем флешку на страницу с помощью SWFobject
2. Передаем ей переменную "ping"
3. флешка её принимает и передает обратно fscommand('ping','')

это я рабочий пример упростил, чтобы понятней было. В опере и фаерлисе всё работает как положено, а в IE нет. В чем причина, не пойму. Поиск ничего дельного не дал.
Вот код флешки:
Код AS1/AS2:

var command:String = null;
_root.onEnterFrame = function() {
        if(_root.command=='ping'){
                fscommand('ping','');
                _root.textfield.text='pong';
        }
        _root.command = null;
}

вот HTML/JS

Код:

<html><head><title>ping</title>
<script type="text/javascript" src="../swfobject.js"></script>
</head><body>
<script language="JavaScript">
// ждем комманду от флешки
function ping_DoFSCommand(command, args){
        alert(command);
}
if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) {
        document.write('<script language=\"VBScript\"\>\n');
        document.write('On Error Resume Next\n');
        document.write('Sub ping_FSCommand(ByVal command, ByVal args)\n');
        document.write('        Call ping_DoFSCommand(command, args)\n');
        document.write('End Sub\n');
        document.write('</script\>\n');
}

function getMovie() {
        var M$ =  navigator.appName.indexOf("Microsoft")!=-1
        return (M$ ? window : document)["ping"]
}

// отправка комманд флешке
function send_command(command){
        getMovie().SetVariable('command',command);
}

// вставляем флешку SWFobject'ом
var flashvars = false;
var params = {
        menu: 'false',
        flashvars: '',
        allowScriptAccess: 'sameDomain',
        quality:'high',
        bgcolor:'#000000',
        allowFullScreen:'true',
        align:'middle',
        nocache:'true'
};
var attributes = {
        id: 'ping',
        name: 'ping',
        align: 'middle',
        nocache:'true'
};
swfobject.embedSWF('ping.swf', 'container', 50, 50, '8.0.0','../expressInstall.swf', flashvars, params, attributes);

</script>
<div id='container'>PING</div>
<input type='button' value='PING' onclick='send_command("ping");' />
</body></html>

здесь по идее должно после нажатия кнопки отправиться сообщение флешке, а она ответить. но в ответ тишина...

Добавлено через 13 минут
Вобщем вся загвоздка в том, что в IE, флешка не может передать комманду fscommand()

dimarik 06.02.2009 15:54

Не надо никаких fscommand. ExternalInterface Вам в руки.

rxcoder 06.02.2009 16:36

дело в том, что там несколько swf файлов, тысячи строчек кода, всё переделывать никак не охота.

Сейчас обнаружил, что если просто взять код, кот. генерирует SWFobject и вставить его на страницу, то всё нормально пашет. Значит загвоздка в динамической вставке кода флешки (<object ...>) на страницу. IE не обрабатывает от неё комманды. Передать данные JS->Flash получается, а обратно нет.

silin 06.02.2009 16:52

тоже встречался с подобной невменеямостью IE, не все что ему дает SWFobject он берет, при этом если вставлять флешку непосредственно как object/embed, то все нормально..
универсального решения не знаю

rxcoder 06.02.2009 17:08

Нда, придется видимо делать, как говорил dimarik. Сейчас попробовал, у ExternalInterface с SWFobject'ом проблем нет.


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

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