Является ли 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
Ответы
Ответ 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