วิธีการฝังไฟล์ SWF ในหน้า HTML?


คำตอบ:


174

วิธีที่ดีที่สุดที่จะฝัง SWF ลงในหน้าเว็บ HTML คือการใช้SWFObject

มันเป็นไลบรารี JavaScript แบบโอเพนซอร์สที่ง่ายต่อการใช้งานและเป็นมิตรกับมาตรฐานในการฝังเนื้อหา Flash

นอกจากนี้ยังมีการตรวจจับเวอร์ชันของ Flash Player หากผู้ใช้ไม่จำเป็นต้องมีรุ่นของ Flash หรือปิดการใช้งาน JavaScript พวกเขาจะเห็นเนื้อหาอื่น นอกจากนี้คุณยังสามารถใช้ไลบรารีนี้เพื่อเรียกการอัปเกรดเครื่องเล่น Flash เมื่อผู้ใช้ได้อัพเกรดพวกเขาจะถูกเปลี่ยนเส้นทางกลับไปที่หน้า

ตัวอย่างจากเอกสาร:

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

เครื่องมือที่ดีที่จะใช้พร้อมกับนี้เป็น SWFObject HTML และ JavaScript กำเนิด มันเป็นพื้นฐานสร้าง HTML และ JavaScript ที่คุณต้องฝัง Flash โดยใช้ SWFObject มาพร้อมกับ UI ที่ง่ายมากสำหรับคุณในการป้อนพารามิเตอร์ของคุณ

แนะนำเป็นอย่างยิ่งและใช้งานง่ายมาก


11
SWFObject นั้นดี มันใช้งานได้ง่าย ความคิดที่ยอดเยี่ยมยิ่งกว่าคือการใช้เครือข่ายการจัดส่งเนื้อหาเพื่อรับ javascript ฉันใช้ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js
Ardee Aram

ฉันมีปัญหากับการใช้แท็กวัตถุโดยตรงกับ IE9 แต่มันทำงานได้อย่างสมบูรณ์กับ swfobject
AndyMcKenna

ขอบคุณสำหรับคำตอบ. ตอนนี้คุณสามารถแนะนำผู้เล่นเช่นกันสำหรับการเข้าถึงความสามารถในการเล่นพร้อมกับตัวอย่างการทำงานใน html ของตัวเอง ????
Sumit Ramteke

สามารถใช้งานได้กับระบบที่ไม่ได้ติดตั้งโปรแกรมเล่นแฟลชหรือรองรับเบราว์เซอร์ทั้งหมด
Mohammed Javed

ตอนนี้โครงการถูกย้ายไปที่ 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
บทความนี้มีคำอธิบายที่ดีเกี่ยวกับการฝังแฟลชและ XHTML ที่ถูกต้อง yoast.com/articles/valid-flash-embedding
Joko Wandiro

3
ทำไมไม่ใช้dataแอตทริบิวต์ในองค์ประกอบ<object> อ้างอิงจาก w3c html5 docs: ต้องมีแอตทริบิวต์ data หรือแอตทริบิวต์ type อย่างน้อยหนึ่งรายการ
vladkras

@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
โปรดทราบว่าพารามิเตอร์ค่าวัตถุ> ข้อมูลและภาพยนตร์> เหมือนกัน รหัสนี้ควรใช้ได้กับทุก ๆ คนที่สามารถรับชมและแบ่งปันได้ฟรี - วิดีโอ youtube
Spooky

3
โดยทั่วไปแล้วการตอบคำถามเพื่ออธิบายรหัสที่พวกเขาให้นั้นเป็นสิ่งที่ต้องการมากกว่าเพียงแค่วางรหัสลงบนผู้ถาม เป้าหมายคือการเรียนรู้เกี่ยวกับปัญหาและป้องกันพวกเขาในอนาคตแทนที่จะทำให้พวกเขาหายตัวไป
KRyan

7

หากคุณกำลังใช้หนึ่งในบรรดาห้องสมุด js <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

คุณลองมาแล้วก่อนที่จะพูดคำตอบที่แย่มาก? โปรดจำไว้ว่าคำตอบที่แย่มากคือคำตอบที่ไม่ได้ผลหรือผิดทั้งหมด
อัลลัน

ความจริงที่ว่าคุณกำลังบอกใครบางคนให้ใช้จาวาสคริปต์แล้ววางโค้ดโดยใช้ไลบรารีจาวาสคริปต์ที่คุณยังไม่ได้พูดถึงทำให้เป็นคำตอบที่ไม่ดี
rorypicko

ฉันได้กล่าวถึงการใช้ Javascript และให้สคริปต์แล้ว ถ้าฉันให้รหัสการทำงาน / สคริปต์ทั้งหมดที่ทำให้การป้อนกระดาษด้วยมือ สคริปต์นั้นเป็นเพียงตรรกะเท่านั้น
อัลลัน

คุณเข้าใจความคิดเห็นของฉันผิด คุณยังไม่ได้บอกให้เขารวมไฟล์จาวาสคริปต์ SWFObject ไว้ด้วย
rorypicko
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.