Как встроить SWF-файл в HTML-страницу?


Ответы:


174

Лучший подход для встраивания SWF- файла в HTML-страницу - это использование SWFObject .

Это простая библиотека JavaScript с открытым исходным кодом, которая является простым в использовании и стандартизированным методом для вставки Flash-содержимого.

Он также предлагает определение версии Flash Player. Если пользователю не требуется версия Flash или JavaScript отключен, он увидит альтернативный контент. Вы также можете использовать эту библиотеку для запуска обновления Flash Player. После обновления пользователь будет перенаправлен обратно на страницу.

Пример из документации:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <title>SWFObject dynamic embed - step 3</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script type="text/javascript" src="swfobject.js"></script>

    <script type="text/javascript">
        swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0");
    </script>

  </head>
  <body>
    <div id="myContent">
      <p>Alternative content</p>
    </div>
  </body>
</html>

Хорошим инструментом для использования является генератор HTML и JavaScript SWFObject . Он в основном генерирует HTML и JavaScript, необходимые для встраивания Flash с использованием SWFObject. Поставляется с очень простым пользовательским интерфейсом для ввода параметров.

Настоятельно рекомендуется и очень прост в использовании.


11
SWFObject это хорошо. Это просто работает. Еще более замечательная идея - использовать сеть доставки контента для получения javascript. Я использую ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js от
Ardee Aram

У меня были проблемы с использованием тега объекта напрямую с IE9, но он отлично работает с swfobject.
AndyMcKenna

Спасибо за Ваш ответ. Теперь вы можете предложить плеер для доступа к возможности воспроизведения, а также рабочий пример в самом html. ????
Sumit Ramteke

Может ли это работать на той системе, где не установлен flash player или он поддерживает все браузеры?
Мохаммед Джавед

Теперь проект перенесен на GitHub: github.com/swfobject/swfobject, и новая техника для вставки SWF-объектаvar el = document.getElementById("my-target-element"); swfobject.embedSWF("myContent.swf", el, 300, 120, 10);
Lucky

127
<object width="100" height="100">
    <param name="movie" value="file.swf">
    <embed src="file.swf" width="100" height="100">
    </embed>
</object>

1
Этот код не является допустимым для XHTML ... <embed> не должен быть внутри тега объекта.
Anheledir

59
Нет спецификации пользователя, чтобы быть действительным XHTML, он попросил HTML
Ólafur Waage

3
В этой статье есть хорошее объяснение встраивания flash и действительного XHTML. yoast.com/articles/valid-flash-embedding
Джоко Вандиро

3
почему бы не использовать dataатрибут в элементе <object> ? Цитата из документа w3c html5: должен присутствовать хотя бы один из атрибута data или type .
владкрас

@JokoWandiro ссылка, которую вы указали, к сожалению, исчезла. Вот заархивированная версия: web.archive.org/web/20180602024700/https://yoast.com/…
Hermann.Gruber


13

Это подходит для применения из корневой среды.

<object type="application/x-shockwave-flash" data="/dir/application.swf" 
id="applicationID" style="margin:0 10px;width:auto;height:auto;">

<param name="movie" value="/dir/application.swf" />
<param name="wmode" value="transparent" /> <!-- Or opaque, etc. -->

<!-- ↓ Required paramter or not, depends on application -->
<param name="FlashVars" value="" />

<param name="quality" value="high" />
<param name="menu" value="false" />

</object>

Дополнительные параметры должны быть / могут быть добавлены в зависимости от .swf сам. Никакого встраивания , только объект и параметры внутри, поэтому он остается действительным, работает и может использоваться везде, не имеет значения, какой! DOCTYPE - это все. :)


8
<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/VhtIydTmOVU&amp;hl=en&amp;fs=1&amp;color1=0xe1600f&amp;color2=0xfebd01" 
style="width:640px;height:480px;margin:10px 36px;">

<param name="movie" value="http://www.youtube.com/v/VhtIydTmOVU&amp;hl=en&amp;fs=1&amp;color1=0xe1600f&amp;color2=0xfebd01" />
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="wmode" value="opaque" />
<param name="quality" value="high" />
<param name="menu" value="false" />

</object>

2
Обратите внимание, что параметры object> data и movie> value совпадают. Этот код должен работать для любого бесплатного просмотра и передачи видео на YouTube.
Жуткий

3
Вообще говоря, желательно, чтобы ответы объясняли код, который они дают, а не просто добавляли код на вопрос. Цель состоит в том, чтобы узнать о проблемах и предотвратить их в будущем, а не заставить их исчезнуть.
KRyan

7

Если вы используете одну из этих библиотек js для вставки Flash, я предлагаю добавить тег вставки простого объекта внутри <noscript/>.


2

Я использую http://wiltgen.net/objecty/ , это помогает встраивать медиа-контент и позволяет избежать проблемы IE «Нажми, чтобы активировать».


Проблема «нажмите для активации» называется «активация eolas», но она удаляется в реальных версиях IE.
Anheledir


2

Это будет работать, я уверен!

<embed src="application.swf" quality="high" pluginspage="http://www.macromedia.com/go/getfashplayer" type="application/x-shockwave-flash" width="690" height="430">

1

Какой «лучший» способ? Такие слова, как «самый эффективный», «самый быстрый рендеринг» и т. Д. Более конкретны. В любом случае, я предлагаю альтернативный ответ, который помогает мне большую часть времени (неважно, «лучший» или нет).

Альтернативный ответ: используйте iframe.

То есть разместить файл SWF на сервере. Если вы поместите SWF-файл в корневую папку или папку public_html, SWF-файл будет расположен по адресу www.YourDomain.com/YourFlashFile.swf.

Затем, в вашем index.html или где-либо еще, свяжите вышеуказанное местоположение с вашим iframe, и оно будет отображаться вокруг вашего контента, куда бы вы ни поместили свой iframe. Если вы можете поместить туда iframe, вы можете поместить туда SWF-файл. Сделайте размеры iframe такими же, как у вашего SWF-файла. В приведенном ниже примере SWF-файл имеет размер 500 на 500.

Псевдокод:

<iframe src="//www.YourDomain.com/YourFlashFile.swf" width="500" height="500"></iframe>

В строке HTML-кода выше будет встроен ваш SWF-файл. Никакого другого беспорядка не требуется. Плюсы: W3C-совместимость, дружественный дизайн страницы, отсутствие проблем со скоростью, минималистский подход.
Минусы: пробел вокруг вашего SWF-файла при запуске в браузере.

Это альтернативный ответ. Является ли это «лучшим» ответом, зависит от вашего проекта.


3
для Google @Stoic извините, что вы ошиблись, он должен //www...использовать //означает, что если вы используете HTTPS или HTTP, он работает с тем же типом соединения
Barkermn01

1

Я знаю, что это старый вопрос. Но этот ответ будет хорошим пока.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>histo2</title>
        <style type="text/css" media="screen">
        html, body { height:100%; background-color: #ffff99;}
        body { margin:0; padding:0; overflow:hidden; }
        #flashContent { width:100%; height:100%; }
        </style>
    </head>
    <body>
        <div id="flashContent">
            <object type="application/x-shockwave-flash" data="histo2.swf" width="822" height="550" id="histo2" style="float: none; vertical-align:middle">
                <param name="movie" value="histo2.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffff99" />
                <param name="play" value="true" />
                <param name="loop" value="true" />
                <param name="wmode" value="window" />
                <param name="scale" value="showall" />
                <param name="menu" value="true" />
                <param name="devicefont" value="false" />
                <param name="salign" value="" />
                <param name="allowScriptAccess" value="sameDomain" />
                <a href="http://www.adobe.com/go/getflash">
                    <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                </a>
            </object>
        </div>
    </body>
</html>

1

Это работает на IE, Edge, Firefox, Safari и Chrome.

<object type="application/x-shockwave-flash" data="movie.swf" width="720" height="480">
            <param name="movie" value="movie.swf" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#000000" />
            <param name="play" value="true" />
            <param name="loop" value="true" />
            <param name="wmode" value="window" />
            <param name="scale" value="showall" />
            <param name="menu" value="true" />
            <param name="devicefont" value="false" />
            <param name="salign" value="" />
            <param name="allowScriptAccess" value="sameDomain" />
            <a href="http://www.adobe.com/go/getflash">
                <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
            </a>
        </object>

0

Это сработало для меня:

    <a target="_blank" href="{{ entity.link }}">
        <object type="application/x-shockwave-flash" data="{{ entity.file.path }}?clickTAG={{ entity.link }}" width="120" height="600" style="visibility: visible;">
            <param name="quality" value="high">
            <param name="play" value="true">
            <param name="LOOP" value="false">
            <param name="wmode" value="transparent">
            <param name="allowScriptAccess" value="true">
        </object>
    </a>


-1

Вы можете использовать JavaScript, если вы знакомы, например:

swfobject.embedSWF("filename.swf", "Title", "width", "height", "9.0.0");

- 9.0.0 - это флэш-версия.

Или вы можете использовать <object>тег HTML5.


-1 swfobject - это не просто часть JavaScript, вы не можете просто вызвать его без встраивания библиотеки. и большая часть функциональности для тега <object> удалена из HTML 4 до 5. Его все еще можно использовать, но не рекомендуется. В целом очень плохой ответ.
rorypicko

Вы уже пробовали это, прежде чем сказать, что это очень плохой ответ? имейте в виду, что очень плохой ответ, это ответ, который не работает полностью или неправильно.
Аллан

тот факт, что вы информируете кого-то использовать javascript, а затем вставляете код с использованием библиотеки javascript, о которой вы даже не упомянули, делает это плохим ответом
rorypicko

Я уже упоминал, что использовал Javascript и дал сценарий. Если бы я дал весь рабочий код / ​​скрипт, который делает кормление с ложечки. Сценарий в порядке, это только логика.
Аллан

Вы неправильно поняли мой комментарий. Вы не сказали ему включить файл Javascript SWFObject
rorypicko
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.