SWFObject не может вставить Flash в IE - PullRequest
0 голосов
/ 22 апреля 2011

4 часа пытались решить эту проблему.У меня действительно странная проблема: SWFObject хорошо встраивает флеш во всех браузерах, кроме IE.Я распечатал HTML каждого выведенного div в textarea и обнаружил, что в IE SWFObject встраивает только корневой тег «object», без каких-либо внутренних тегов (например, param name = "movie" value = "myVal"), поэтомуЯ думаю, именно поэтому я получаю "фильм не загружен" в IE.

Мой код выглядит следующим образом:


window.embedFlash=function (properties)
{
    swfobject.addDomLoadEvent(function ()
    {
        swfobject.createSWF(
        {
            data: properties.data,
            width: properties.width||'100%',
            height: properties.height||'100%'
        },
        {
            allowScriptAccess: 'always',
            allowFullScreen: 'true',
            allowNetworking: properties.allowNetworking||'all',
            flashvars: properties.flashvars||null,
            wmode: properties.wmode||null,
            menu: properties.menu||'false'
        },properties.id);
    });
};

Ответы [ 2 ]

0 голосов
/ 22 апреля 2011

Вы в основном воссоздаете метод swfobject.embedSWF, поэтому я предлагаю переформатировать ваш код, чтобы использовать swfobject.embedSWF, поскольку он широко поддерживается и тщательно протестирован.Единственные различия, которые я вижу между вашим кодом и embedSWF:

  • отсутствие определения версии в вашем коде (embedSWF требует, чтобы вы указали минимальную версию Flash Player
  • отсутствиеexpressinstall в вашем коде (это может быть установлено в false в embedSWF, если вы не заинтересованы
  • ваша переменная flashvars, вероятно, отформатирована как строка, тогда как embedSWF ожидает объект, содержащий пары ключ / значение
  • swfobject.embedSWF вызывается при загрузке по умолчанию, поэтому вам не нужно писать обработчик ondomload

Вот быстрое переформатирование вашего кода. Он потерпит неудачу, если ваши flashvars отправляются в виде строки:

window.embedFlash=function (properties)
{

    var flashvars = properties.flashvars||false;
    var params = {
       allowFullScreen: 'true',
       allowNetworking: properties.allowNetworking||'all',
       allowScriptAccess: 'always',
       menu: properties.menu||'false',
       wmode: properties.wmode||"window"
    };
    var attributes = {};

    swfobject.embedSWF(properties.data, 
                       properties.id, 
                       properties.width||'100%', 
                       properties.height||'100%', 
                       "9", 
                       false,//URL for expressinstall, if available 
                       flashvars, 
                       params, 
                       attributes);

};
0 голосов
/ 22 апреля 2011

Обычно «фильм не загружен» означает, что экземпляр Flash Player AVM запущен, но указанный вами URL не найден. Кроме того, ваша версия SWF может не синхронизироваться с версией Flash Player в IE.

Проверьте, есть ли у вас какие-либо 404, и проверьте, работает ли скомпилированная версия SWF в версии FP, установленной для IE.

...