javascript - HTML5 FileApi + FileReader - 使用 SWF 馈送 <object>

标签 javascript html fileapi

我想使用 HTML5 FileApi 将 SWF 读取到 OBJECT(或 EMBED,是否更好?)。

我当前的代码在 Chrome/Iron(唯一也支持 xmlhttprequest v2 FormData 的稳定浏览器)上崩溃。我得到它来将图像数据读取到即时创建的 IMG 中。但是对象一使浏览器中的当前选项卡崩溃。

else if (file.type == "application/x-shockwave-flash") {
    var show = document.createElement("object");
    show.type = "application/x-shockwave-flash"
    show.style.width = "100%";
    show.style.height = "100%";
    show.id = "thumb";
    document.getElementById("thumbnails").appendChild(show);

    var reader = new FileReader();
    reader.onload = (function (aImg) { 
        return function (e) { aImg.data = e.target.result; }; 
    })(show);
    reader.readAsDataURL(file);

我真的读到了 object.data 部分吗?它是如何正确完成的?有人知道吗?或者这是不完整的,我必须等待更好的实现?

最佳答案

一些我建议尝试的事情(按照复杂性增加的顺序):

  • 使用btoa 对数据进行base64 编码并使用 data: URI 进行设置,
  • 而不是使用 createElement 创建对象, 构造 <object>将所有属性标记为 HTML 字符串(包括上面的 base64 建议),然后使用 innerHTML 将其注入(inject)到 DOM 元素中,
  • 创建一个反射器网络服务,您可以在其中发布 swf 内容,它会为您提供一个 URL,然后将该 URL 传递给该对象,
  • 与之前类似,创建一个反射器 Web 服务,您可以在其中发布 swf 内容,将全屏 IFRAM 作为目标,让该服务返回一个 HTML 文档,其中包含 <object>指向服务器。

这些选项中的后者更为密集,并且需要您可能希望避免的来自服务器的往返行程 - 您可能需要考虑更多选项。

ActionScript 3 有一个 Loader 这也可能有用。不知道支持不支持data: URI,但如果有,您可以编写一个引导加载程序 SWF,它直接运行本地 swf 文件的内容。

关于javascript - HTML5 FileApi + FileReader - 使用 SWF 馈送 <object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3768719/

相关文章:

javascript - chrome 未捕获异常错误 : cannot set property 'onclick' of null

javascript - 如何使用 bootstrap 在所有 4 个选项卡上复制相同的导航菜单?

javascript - 如何让我的下拉菜单出现/对齐

javascript - 使用 jQuery 显示 JSON 响应的数据

javascript - 上传前更改文件内容

javascript - 如何从图像输入中获取 xy 坐标?

javascript - 将数字分成 3 位数字,其余的分为 2 位数字

javascript - .files 在 JavaScript 中实际上做了什么?

google-chrome - 替换 Chrome 打包应用中的 fileEntry.toURL()

javascript - 如何在 Api jQuery DataTables 中创建删除按钮?