Làm cách nào để nhúng tệp SWF trong trang HTML?


175

Làm thế nào để bạn nhúng một tệp SWF trong một trang HTML?

Câu trả lời:


174

Cách tiếp cận tốt nhất để nhúng SWF vào trang HTML là sử dụng SWFObject .

Đây là một thư viện JavaScript mã nguồn mở đơn giản, là phương thức dễ sử dụng và thân thiện với tiêu chuẩn để nhúng nội dung Flash.

Nó cũng cung cấp phát hiện phiên bản Flash player. Nếu người dùng không có phiên bản Flash cần thiết hoặc đã tắt JavaScript, họ sẽ thấy một nội dung thay thế. Bạn cũng có thể sử dụng thư viện này để kích hoạt nâng cấp trình phát Flash. Khi người dùng đã nâng cấp, họ sẽ được chuyển hướng trở lại trang.

Một ví dụ từ tài liệu:

<!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>

Một công cụ tốt để sử dụng cùng với điều này là trình tạo mã JavaScript và JavaScript SWFObject . Về cơ bản, nó tạo ra HTML và JavaScript mà bạn cần để nhúng Flash bằng SWFObject. Đi kèm với một giao diện người dùng rất đơn giản để bạn nhập các tham số của mình.

Nó rất được khuyến khích và sử dụng rất đơn giản.


11
SWFObject là tốt. Nó chỉ đơn giản là hoạt động. Một ý tưởng tuyệt vời hơn nữa là sử dụng Mạng phân phối nội dung để lấy javascript. Tôi sử dụng Google ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js
Ardee Aram

Tôi gặp vấn đề với việc sử dụng thẻ đối tượng trực tiếp với IE9 nhưng nó hoạt động hoàn hảo với swfobject.
AndyMcKenna

Cảm ơn câu trả lời của bạn. Bây giờ bạn có thể đề xuất một trình phát để truy cập khả năng phát lại cùng với ví dụ hoạt động trong chính html. ????
Sumit Ramteke

Đây có thể là công việc trên hệ thống đó, nơi trình phát flash không được cài đặt hoặc nó hỗ trợ tất cả các trình duyệt.
Mohammed Javed

Dự án hiện được chuyển sang GitHub: github.com/swfobject/swfobject và kỹ thuật mới để nhúng đối tượng swf là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
Mã đó không hợp lệ XHTML ... <embed> không được nằm trong thẻ đối tượng.
Anheledir

59
Không có thông số kỹ thuật nào của người dùng là XHTML hợp lệ, anh ta yêu cầu HTML
Ólafur Chờ đợi

3
bài viết này có một lời giải thích tốt về việc nhúng flash và XHTML hợp lệ. yoast.com/articles/valid-flash-embpping
Joko Wandiro

3
Tại sao không sử dụng datathuộc tính trong phần tử <object> ? Trích dẫn từ các tài liệu w3c html5: Ít nhất một trong hai thuộc tính dữ liệu hoặc thuộc tính loại phải có mặt.
vladkras

@JokoWandiro liên kết bạn cung cấp không may bị mất. Dưới đây là một phiên bản lưu trữ: web.archive.org/web/20180602024700/https://yoast.com/...
Hermann.Gruber

17

Làm thế nào về thẻ HTML5 đơn giản được nhúng?

<!DOCTYPE html>
<html>
<body>

<embed src="anim.swf">

</body>
</html>

13

Điều này phù hợp cho ứng dụng từ môi trường gốc.

<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>

Các tham số bổ sung nên / có thể được thêm vào tùy thuộc vào .swf nó tự. Không nhúng , chỉ có đối tượng và tham số bên trong, vì vậy, nó vẫn hợp lệ, hoạt động và có thể sử dụng ở mọi nơi, không thành vấn đề! DOCTYPE là tất cả về. :)


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
Lưu ý rằng các đối tượng> dữ liệu và phim> tham số giá trị là như nhau. Mã này sẽ hoạt động cho mọi người xem và chia sẻ miễn phí - video youtube.
Ma quái

3
Nói chung, mong muốn câu trả lời giải thích mã họ đưa ra, thay vì chỉ bỏ mã trên người hỏi. Mục tiêu là tìm hiểu về các vấn đề và ngăn chặn chúng trong tương lai chứ không phải làm cho chúng biến mất.
KRyan

7

Nếu bạn đang sử dụng một trong những thư viện js đó để chèn Flash, tôi khuyên bạn nên thêm thẻ nhúng đối tượng đơn giản bên trong <noscript/>.


2

Tôi sử dụng http://wiltgen.net/objecty/ , nó giúp nhúng nội dung phương tiện và tránh vấn đề "nhấp để kích hoạt" IE.


Vấn đề "nhấp để kích hoạt" được gọi là "kích hoạt eolas" nhưng được loại bỏ trong các phiên bản thực tế của IE.
Anheledir


2

Điều này sẽ làm việc, tôi chắc chắn!

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

1

Cách tốt nhất là gì? Những từ như 'hiệu quả nhất', 'kết xuất nhanh nhất', v.v. thì cụ thể hơn. Dù sao, tôi đang đưa ra một câu trả lời thay thế giúp tôi hầu hết thời gian (dù có hay không 'tốt nhất' là không liên quan).

Câu trả lời thay thế: Sử dụng iframe.

Đó là, lưu trữ tệp SWF trên máy chủ. Nếu bạn đặt tệp SWF trong thư mục gốc hoặc public_html thì tệp SWF sẽ được đặt tại www.YourDomain.com/YourFlashFile.swf.

Sau đó, trên index.html hoặc bất cứ nơi nào, hãy liên kết vị trí trên với iframe của bạn và nó sẽ được hiển thị xung quanh nội dung của bạn bất cứ nơi nào bạn đặt iframe của mình. Nếu bạn có thể đặt iframe ở đó, bạn có thể đặt tệp SWF ở đó. Đặt kích thước iframe giống như tệp SWF của bạn. Trong ví dụ dưới đây, tệp SWF là 500 x 500.

Mã giả:

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

Dòng mã HTML ở trên sẽ nhúng tệp SWF của bạn. Không có mớ hỗn độn khác cần thiết. Ưu điểm: Tuân thủ W3C, thiết kế trang thân thiện, không có vấn đề về tốc độ, cách tiếp cận tối giản.
Nhược điểm: Khoảng trắng xung quanh tệp SWF của bạn khi được khởi chạy trong trình duyệt.

Đó là một câu trả lời thay thế. Cho dù đó là câu trả lời 'tốt nhất' tùy thuộc vào dự án của bạn.


3
đối với google @Stoic xin lỗi, bạn đã //www...sử dụng sai //nghĩa là nếu trên HTTPS hoặc HTTP của bạn, nó hoạt động bằng cùng loại kết nối
Barkermn01

1

Tôi biết đây là một câu hỏi cũ. Nhưng câu trả lời này sẽ tốt cho hiện tại.

<!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

Thi hoạt động trên IE, Edge, Firefox, Safari và 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

Điều này làm việc cho tôi:

    <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>

0

Sử dụng <embed>phần tử:

<embed src="file.swf" width="854" height="480"></embed>

-1

Bạn có thể sử dụng JavaScript nếu bạn quen thuộc, như thế:

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

- 9.0.0 là phiên bản flash.

Hoặc bạn có thể sử dụng <object>thẻ của HTML5.


-1 swfobject không chỉ là một phần của JavaScript, bạn không thể gọi nó mà không nhúng thư viện. và hầu hết các chức năng cho thẻ <object> đã bị loại bỏ khỏi HTML 4 đến 5. Nó vẫn có thể được sử dụng, nhưng không được khuyến nghị. Tất cả trong một câu trả lời rất xấu.
rorypicko

bạn đã thử nó trước khi nói một câu trả lời rất tệ? Hãy nhớ rằng câu trả lời rất tệ, là câu trả lời không hoàn toàn làm việc hoặc sai.
Allan

thực tế là bạn đang thông báo cho ai đó sử dụng javascript, sau đó dán mã bằng thư viện javascript mà bạn chưa từng đề cập khiến nó trở thành một câu trả lời tồi
rorypicko

Tôi đã đề cập đến Javascript đã sử dụng và đưa ra kịch bản. Nếu tôi đưa ra toàn bộ mã / kịch bản làm việc cho ăn. Kịch bản là tốt, nó chỉ là một logic.
Allan

Bạn đang hiểu nhầm ý kiến ​​của tôi. Bạn đã không nói với anh ấy bao gồm tệp Javascript SWFObject
rorypicko
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.