Подтвердить что ты не робот

Является ли IE единственным браузером (или версией), который не позволяет манипулировать объектами Flash?

Я пробовал несколько способов редактировать Flash-объекты/Embeds через Javascript, и, похоже, он работает во всем, кроме IE, поэтому я думаю о том, чтобы просто выбросить IE из окна для этого приложения, если не существует более старой + используемой версии другие браузеры, которые также не позволяют редактировать объекты. Примером этого может быть:

document.getElementById(divID).innerHTML = '<object ...><embed ...><\/embed><\/object>';

или в jquery

var params = '<param name="allowFullScreen" value="true" />' +
             '<param name="allowScriptAccess" value="always" />' +
             '<param name="allowNetworking" value="all" />' +
             '<param name="movie" value="player.swf" />' +
$("#objectPlayer").html(params);

Если все остальные современные браузеры и самые используемые версии поддерживают этот вид редактирования, я просто перечеркню IE. И прежде чем я наводню SWFObject JS Framework, я не буду включать огромную структуру для браузера, который, как я полагаю, не будет содержать мою демографию.

JSFiddle

Здесь ссылка на JSFiddle, которую я создал. Он работает во всех браузерах, но IE8

4b9b3361

Ответ 1

Я считаю, что часть <param> вашего кода для <object>.

Вам также необходимо передать пары имя/значение для embed.

$("#objectPlayer embed").attr({
    "src": "fileName.swf",
    "name": "fileName",
    "allowFullScreen": "true",
    "width": 200,
    "height": 100,
    "type": "application/x-shockwave-flash"

    //and so on...
    });

Но я бы использовал SWFObject в любом случае, это отраслевой стандарт, он достаточно прочен и является лучшим способом встраивания флеш-памяти на веб-сайт.

Ответ 2

Если я понимаю ваш вопрос и цель использования, это то, что я бы предложил.

Я бы использовал SWFObject для вставки вашего SWF на вашу HTML-страницу. Оттуда вы можете передать flashVars (объект, на который вы можете установить пользовательские значения), на ваш SWF. Это не так много усилий для реализации этого и более чистого использования (на мой взгляд). Значения flashVars можно легко установить с помощью значений PHP или заполнить их равными значениями.

Посмотрите эту статью для получения дополнительной информации о SWFObject и FlashVars и о том, как их использовать в ActionScript 3.

Ответ 3

Единственной достойной альтернативой SWFObject, о которой я знаю, является плагин jQuery Tools Flashembed, размер которого 3.6k (и меньше при подаче со сжатием):

http://jquerytools.org/demos/toolbox/flashembed/index.html

Ссылка для скачивания: http://jquerytools.org/download/ Единственная зависимость - это сам jQuery.

Ответ 4

Хммм... странно, DOM не будет корректно обновляться в IE8. Это рабочий код. Это уродливо, и есть много возможностей для оптимизации:

<div id="player">
<a href="javascript: void(0)" onclick="build()">Click Me!</a><br />
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" type="application/x-shockwave-flash" id="twitchTV" width="600" height="368" style="margin:0px;padding:0px">

    <param name="movie" value="http://www.twitch.tv/widgets/live_embed_player.swf?channel=day9tv" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#ffffff" />
    <param name="allowFullScreen" value="true" />
    <param name="allowScriptAccess" value="always" />
    <param name="allowNetworking" value="all" />
        <embed src="http://www.twitch.tv/widgets/live_embed_player.swf?channel=day9tv" quality="high" bgcolor="#ffffff" width="600" height="368"
    name="videoplayer" align="" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
    </object>     

</div>

JS:

function build(){
    // Usually the channels are vars, but this is simplified.
    var data = 'http://www.twitch.tv/widgets/live_embed_player.swf?channel=lzgamertv';   // Object Data
    var html = '<a href="javascript: void(0)" onclick="build()">Click Me!</a><br /><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" type="application/x-shockwave-flash" id="twitchTV" width="600" height="368" style="margin:0px;padding:0px"><param name="movie" value="'+data+'" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><embed src="'+data+'" quality="high" bgcolor="#ffffff" width="600" height="368" name="videoplayer" align="" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></object>';


     $("#player").html("");
     $("#player").append(html);


}

JSFiddle здесь

Ответ 5

Вы можете попробовать что-то вроде этого...

http://jsfiddle.net/eH8cK/

Фактически вы можете переписать все содержимое проигрывателя, когда вы уже переписываете почти всю часть содержимого.

Пожалуйста, попробуйте и дайте мне знать, если это сработает. Благодаря

Ответ 6

У меня была эта очень странная ошибка с IE8 в одном из моих проектов, что было очень сложно поймать - это привело к сбою Google excanvas, если элементы canvas были добавлены с помощью innerHTML вместо использования document.createElement/document.appendChild.

Я исправил его, взяв все элементы canvas, которые были созданы с помощью innerHTML, и перезапустил их с помощью метода DOM createElement.

Я заметил аналогичные проблемы с другими "интерактивными" элементами в IE8, поэтому я предлагаю вам попробовать это.

У меня нет IE8 для его проверки, но здесь попробовать его на jsfiddle