Я нашел это прохладно file-upload repo by mailr u, он называется FileAPI. FileAPI использует .swf-файл как инструмент отладки. Как это работает без встраивания .swf-файла?Возможно общение между Flash и JavaScript без встраивания
ответ
Как это работает без вложения .swf файл ??
Кажется, что они динамически обновляют страницу html (теперь есть встроенный SWF). Это означает использование innerHTML
для генерации нового контента, который был не изначально закодирован в html-файле. Вы можете проверить базовое руководство about innerHTML здесь.
Глядя на FileAPI.js, начиная от line 3590 мы видим, что они действительно используют innerHTML
встроить объект Flash-памяти. Он включается (динамически), когда запускается правильная функция Javascript.
Некоторые короткий фрагмент своего кода ниже:
/**
* Publish flash-object
*
* @param {HTMLElement} el
* @param {String} id
* @param {Object} [opts]
*/
publish: function (el, id, opts){
opts = opts || {};
el.innerHTML = _makeFlashHTML({
id: id
, src: _getUrl(api.flashUrl, 'r=' + api.version)
//, src: _getUrl('http://v.demidov.boom.corp.mail.ru/uploaderfileapi/FlashFileAPI.swf?1')
, wmode: opts.camera ? '' : 'transparent'
, flashvars: 'callback=' + (opts.onEvent || 'FileAPI.Flash.onEvent')
+ '&flashId='+ id
+ '&storeKey='+ navigator.userAgent.match(/\d/ig).join('') +'_'+ api.version
+ (flash.isReady || (api.pingUrl ? '&ping='+api.pingUrl : ''))
+ '&timeout='+api.flashAbortTimeout
+ (opts.camera ? '&useCamera=' + _getUrl(api.flashWebcamUrl) : '')
+ '&debug='+(api.debug?"1":"")
}, opts);
},
... etc etc etc ...
Они могут использовать File API. Не путайте его с именем библиотеки Mail.ru. Смотрите эту связь: https://developer.mozilla.org/en/docs/Web/API/File https://developer.mozilla.org/ru/docs/Web/API/XMLHttpRequest#sendAsBinary()