Отображение 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, время: 08:45. |