HTML5 FileApi + FileReader - Feed <object>с SWF - PullRequest
7 голосов
/ 22 сентября 2010

Я хочу использовать 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 части? Как это сделано правильно? Кто-нибудь знает? Или это неполно, и я должен ждать лучшей реализации?

1 Ответ

2 голосов
/ 07 июля 2011

Несколько вещей, которые я бы порекомендовал попробовать (в порядке возрастания сложности):

  • base64 кодирует данные с помощью btoa и устанавливает их с помощью data: URI ,
  • вместо создания объекта с использованием createElement, создайте тег <object> со всеми атрибутами в виде строки HTML (включая приведенный выше совет по base64), а затем вставьте его в элемент DOM с помощью innerHTML,
  • создайте веб-сервис отражателя, где вы размещаете SWF-контент, он дает вам URL, а затем передает URL объекту,
  • аналогично предыдущему, создайте веб-сервис рефлектора, в котором вы размещаете SWF-контент, нацеливаясь на полноэкранный IFRAM в качестве цели, чтобы служба отображала HTML-документ, включая <object>, указывающий на сервер. 1019 *

Более поздняя из этих опций более интенсивна и требует обходов с сервера, которых вы, вероятно, хотели бы избежать - просто еще несколько опций, которые вы могли бы рассмотреть.

ActionScript 3 имеет Loader, что также может быть полезно. Я не знаю, поддерживает ли он data: URI, но если это так, вы могли бы написать SWF-файл загрузчика, который напрямую запускает содержимое локального SWF-файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...