我想使用 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/