Существует ли стандартный способ копирования и вставки для безопасного размещения SWF на веб-странице?

Хотя встраивание SWF в HTML не слишком сложно, есть несколько тонкостей для разных браузеров, определение того, установлен ли Flash и т. д. Для включения AJAX существуют стандартные фрагменты кода, которые вы можете использовать, чтобы избежать хлопот, связанных со всеми случаями. ... является ли их аналогичной «эталонной реализацией» для встраивания SWF, которая охватывает все основы?


person Mr. Boy    schedule 30.09.2009    source источник


Ответы (5)


Есть ли стандарт? К сожалению, нет. Желательные моменты метода встраивания Flash:

  1. современный браузер совместимый
  2. IE-совместимый
  3. совместимый с древним браузером
  4. соответствующий стандартам
  5. поддержка потоковой передачи Flash (воспроизведение до загрузки всего файла) в IE
  6. Не повторяйтесь
  7. разрешить резервный контент
  8. нет зависимости от JavaScript

но нет ни одной наценки, удовлетворяющей всем этим пунктам. Пункт 6 невозможно выполнить полностью, но некоторые решения терпят неудачу хуже, чем другие.

Самая простая разметка, которую вы можете использовать, — это версия, изложенная в классической статье Flash Satay:

<object type="application/x-shockwave-flash" data="file.swf" width="x" height="y">
    <param name="movie" value="file.swf" />
    (Non-Flash content here)
</object>

В статье ALA жалуется, что эта версия не предложит пользователю загрузить Flash, если он не установлен; лично я вижу в этом плюс. Но он по-прежнему терпит неудачу в пунктах 3 и 5. Пункт 5 может иметь значение, а может и не иметь: если ваш Flash-файл представляет собой простое приложение, медиаплеер или загрузчик, это вообще не имеет значения, но если это большая анимация, это может быть неудачно. .

Может быть, пункт 3 больше не имеет значения; в наши дни никто на самом деле не использует Netscape 4 или IE4. Но если это так для вас, вам нужен встроенный тег старой школы. Это также поддерживается современными браузерами, что означает, что вы можете использовать метод ActiveX для внешнего объекта, поэтому вы получаете потоковую передачу в IE:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="x" height="y">
    <param name="movie" value="file.swf" />
    <embed type="application/x-shockwave-flash" src="file.swf" width="x" height="y" />
</object>

Это «традиционный» метод встраивания Flash. Он не работает по пунктам 4 и 7 и немного хуже по пункту 6.

Третий подход, используемый такими библиотеками, как SWFObject, заключается в использовании JavaScript для выбора наилучшего пути. для создания экземпляра Flash в текущем браузере. Это может затронуть все вышеперечисленные пункты, кроме, естественно, 8. Некоторые библиотеки предлагают способы смягчить это, также включая разметку статических объектов, обменивая пункт 8 на пункт 6.

person bobince    schedule 30.09.2009

Apple (Link например)

Содержимое, которое будут просматривать ваши подключаемые модули, должно быть встроено в HTML. Большинство браузеров делают это с помощью тега EMBED, но для других требуется тег OBJECT. Для максимальной совместимости вы можете настроить свою страницу так, чтобы она поддерживала и то, и другое.

Adobe (например, ссылка)

Тег OBJECT используется Internet Explorer в Windows, а тег EMBED используется Netscape Navigator (Macintosh и Windows) и Internet Explorer (Macintosh), чтобы указать браузеру загрузить Macromedia Flash Player. Internet Explorer в Windows использует элемент управления ActiveX для воспроизведения содержимого Macromedia Flash, в то время как все другие комбинации браузера и платформы используют технологию подключаемого модуля Netscape для воспроизведения содержимого Macromedia Flash. Это объясняет необходимость двух тегов.

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
       codebase="http://download.macromedia.com/pub/
                 shockwave/cabs/flash/swflash.cab#version=6,0,40,0"
          WIDTH="550"
         HEIGHT="400"
             id="myMovieName">
    <PARAM NAME=movie VALUE="myFlashMovie.swf">
    <PARAM NAME=quality VALUE=high>
    <PARAM NAME=bgcolor VALUE=#FFFFFF>
    <EMBED href="/support/flash/ts/documents/myFlashMovie.swf"
        quality=high
        bgcolor=#FFFFFF
          WIDTH="550"
         HEIGHT="400"
           NAME="myMovieName"
          ALIGN=""
           TYPE="application/x-shockwave-flash"
    PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
    </EMBED>
</OBJECT>
person Georg Schölly    schedule 30.09.2009

Многие реализации встраивания Flash основаны на SWFObject. Это то, что вы ищете? Изменить: проект размещен здесь

person fvu    schedule 30.09.2009

Я бы порекомендовал SWF Object по сравнению со всеми другими вариантами, потому что он создает HTML-код, соответствующий стандартам, и его действительно легко настроить.

person Paul Sheldrake    schedule 01.10.2009

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script> 
<div id="myvideo"></div>
<script type="text/javascript">
var params = { allowScriptAccess: "always" };
var atts = { id: "myplayerid1" };
swfobject.embedSWF("http://www.youtube.com/v/gRvUpoTT-Bo&hl=pt-br&fs=1&enablejsapi=1&playerapiid=myplayerid1&version=3", "myvideo", "425", "344", "8", null, null, params, atts);
</script>

Это может быть простой способ... использовать js fiddle для тестирования любого кода... это очень помогло мне попробовать много вещей

person May    schedule 28.09.2012