Отображение SWF с помощью File API
Как отобразить flash-ролик динамически с помощью FileAPI (FileReader).
Как отобразить JPEG нашел, var reader = new FileReader(); reader.onload = (function(theFile) { return function(e) { var div = document.getElementById('image'); div.innerHTML = ['<img class="thumb" src="', e.target.result,'" title="', theFile.name, '"/>'].join(''); } })(f); reader.readAsDataURL(f); а как быть с swf не соображу! Помогите. |
Дык также, только вместо img - object (или embed):
<object type="application/x-shockwave-flash" data="flash.swf" width="750" height="400"> <param name="movie" value="flash.swf" /> </object> |
Извените, не прокатит.
data='flash.swf' не получится! Мне надо как-то так: div.innerHTML = '<object type="application/x-shockwave-flash" data="' + e.target.result + '" width="750" height="400"><param name="movie" value="' + e.target.result + '" />'; |
Цитата:
Цитата:
|
Полный код страницы:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>File API Test</title> <style> .thumb { height: 75px; border: 1px solid #000; margin: 10px 5px 0 0; } </style> <script> function changeImage(el) { var f = el.files[0]; if (f.type.match('image.*') != null) showPicture(f); else if (f.type.match('flash') != null) showFlash(f); else return; } function showFlash(f) { var reader = new FileReader(); reader.onload = (function(theFile) { return function(e) { var div = document.getElementById('image'); div.innerHTML = '<object class="thumb" type="application/x-shockwave-flash" data="' + (e.target.result) +'"><param name="movie" value="'+ (e.target.result) +'" />'; } })(f); reader.readAsDataURL(f); } function showPicture(f) { var reader = new FileReader(); reader.onload = (function(theFile) { return function(e) { var div = document.getElementById('image'); div.innerHTML = ['<img class="thumb" src="', e.target.result,'" title="', theFile.name, '"/>'].join(''); } })(f); reader.readAsDataURL(f); } </script> </head> <body> <input type="file" id="load" name="load"/> <br /> <div id="image"></div> <script> if (window.File && window.FileReader && window.FileList && window.Blob) { document.getElementById('load').onchange = function() { changeImage(document.getElementById('load')); } } else { alert('The File APIs are not fully supported in this browser.'); } </script> </body> </html> Я так полагаю, что в строке: div.innerHTML = '<object class="thumb" type="application/x-shockwave-flash" data="' + (e.target.result) +'"><param name="movie" value="'+ (e.target.result) +'" />'; как-то правильно надо задать параметр data и value. А вот как задать? |
Нашел очень простое решение !!!
div.innerHTML = '<object class="thumb" type="application/x-shockwave-flash" [B]src="'+theFile.name+'[/B]"><param name="movie" value="'+[B]theFile.name[/B]+'" />'; |
Нет у object атрибута src.
Есть data. Но этот атрибут не понимают ишаки 7-8. Поэтому для них нужен param[name="movie"], хотя его также понимают все браузеры кроме Firefox (только что тестил в IE7-9, Opera, Safari, Firefox, Chrome) И закрой тег object, во избежание возможных проблем. |
Часовой пояс GMT +3, время: 09:21. |