无需嵌入即可在Flash和JavaScript之间进行通信

时间:2016-07-18 03:33:36

标签: flash swfupload

我找到了这个很酷的file-upload repo by mailr你,它叫做FileAPI。 FileAPI使用.swf文件作为调试工具。如何在不嵌入.swf文件的情况下工作?

2 个答案:

答案 0 :(得分:1)

  

如何在不嵌入.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 ...

答案 1 :(得分:0)

他们可以使用File API。不要将它与Mail.ru库的名称混淆。看到这个链接: https://developer.mozilla.org/en/docs/Web/API/File https://developer.mozilla.org/ru/docs/Web/API/XMLHttpRequest#sendAsBinary()