<embed> เทียบกับ <object>


164

แท็กที่ถูกต้อง / ดีที่สุดที่จะใช้ในไฟล์ HTML ของฉันคืออะไรเมื่อฉันต้องการแสดง Adobe PDF viewer

ตอนนี้ฉันกำลังใช้รหัสด้านล่าง แต่มีผลข้างเคียงที่แปลก (เช่นดูเหมือนว่าจะขโมยโฟกัสเริ่มต้นที่ฉันตั้งไว้ที่<input>กล่องข้อความอื่นดูเหมือนว่าจะเล่นได้ไม่ดีนักกับ jQueryUI Resizeable class; ฯลฯ )

<embed src="abc.pdf" type="application/pdf" />

ฉันสามารถทำสิ่งเดียวกันกับ<object>แท็กได้หรือไม่ มีข้อดี / ข้อเสียในการใช้แท็กหนึ่งกับอื่น ๆ หรือไม่


21
และตอนนี้ด้วย <embed> ใน HTML5 วิธีที่ดีที่สุดคืออะไร?
VinnyG

@VinnyG <embed>เป็นแท็กมาตรฐานอย่างเป็นทางการที่มี HTML5 แต่คุณควรคาดหวังว่าจะมีปัญหาด้านความเข้ากันได้กับเบราว์เซอร์เวอร์ชันเก่าอย่างน้อย
b1nary.atr0phy

คำตอบ:


169

OBJECT vs. EMBED - ทำไมไม่ใช้ embed เสมอ

บรรทัดล่าง: วัตถุประสงค์คือดี, EMBED เก่า นอกเหนือจากแท็ก PARAM ของ IE เนื้อหาใด ๆ ระหว่างแท็ก OBJECT จะแสดงผลถ้าเบราว์เซอร์ไม่สนับสนุนปลั๊กอินที่อ้างถึงของ OBJECT และเห็นได้ชัดว่าเนื้อหานั้นได้รับการร้องขอ http โดยไม่คำนึงว่าจะแสดงผลหรือไม่

objectเป็นแท็กมาตรฐานปัจจุบันเพื่อฝังบางสิ่งบางอย่างในหน้า embedถูกรวมโดย Netscape (ไปด้วยimg)ก่อนที่ทุกอย่างobjectจะอยู่ในใจของw3c

นี่คือวิธีที่คุณรวม PDF ด้วยobject :

<object data="data/test.pdf" type="application/pdf" width="300" height="200">
  alt : <a href="data/test.pdf">test.pdf</a>
</object>

หากคุณต้องการอินไลน์ PDF เพื่อแสดงในเกือบทุกเบราว์เซอร์เนื่องจากเบราว์เซอร์รุ่นเก่าเข้าใจembedแต่ไม่objectจำเป็นต้องทำดังนี้:

<object data="abc.pdf" type="application/pdf">
    <embed src="abc.pdf" type="application/pdf" />
</object>

รุ่นนี้ไม่ตรวจสอบ


47
<embed> เป็นส่วนหนึ่งของ HTML5 dev.w3.org/html5/spec/Overview.html#the-embed-element
Drew LeSueur

7
แม้ว่าจะ<embed>เป็นส่วนหนึ่งของมาตรฐาน HTML5 แต่สำหรับฉันแล้ว<object>มันเป็นตัวเลือกที่ดีกว่าเนื่องจากความเข้ากันได้กับเบราว์เซอร์รุ่นเก่าและความสามารถในการแสดงเนื้อหาทางเลือก คิด?
กราฟิลส์

4
@raphaelcm ให้ฉันเล่นเป็นผู้สนับสนุนของปีศาจ หากการรักษาความเข้ากันได้กับเบราว์เซอร์ที่ล้าสมัยเป็นสิ่งสำคัญ HTML จะไม่เปลี่ยนแปลง สิ่งสำคัญคือส่วนแบ่งการตลาดโดยเฉพาะรุ่นเบราว์เซอร์
b1nary.atr0phy

7
ทำไมสิ่งนี้จึงเป็นที่ยอมรับ ฉันคิดว่า <embed> เป็นแท็กมาตรฐาน HTML5
fabspro

2
ฉันคิดว่า <embed> จะเป็นทางเลือกที่ดีกว่าในอนาคต อยู่ในมาตรฐาน HTML5 ในขณะที่ Object มีคุณลักษณะ (แอตทริบิวต์) จำนวนมากเลิกใช้งานเพื่อแยกการทำงานออกจากแท็กฝัง w3schools.com/tags/tag_object.aspดูเหมือนว่าแท็กวัตถุเกือบจะเป็นแท็ก 'มีดทหารสวิส' ในขณะที่ฝังไว้มีวัตถุประสงค์เพื่อสร้างเนื้อหาที่ฝังลงในหน้า
cmaynard

5

ตัวเลือกอื่น ๆ :

<object type="application/pdf" data="filename.pdf" width="100%" height="100%">
</object>

<object type="application/pdf" data="#request.localhost#_includes/filename.pdf" 
        width="100%" height="100%">
  <param name="src" value="#request.localhost#_includes/filename.pdf">
</object>

3

คุณสามารถใช้วิธี iframe ได้แม้ว่าจะไม่เข้ากันได้กับเบราว์เซอร์ข้าม (เช่นไม่ทำงานในโครเมียมหรือ Android และอาจเป็นอย่างอื่น -> ให้ทำการดาวน์โหลดแทน) ใช้งานได้กับ dataURL และ URLS ปกติไม่แน่ใจว่าตัวอย่างอื่น ๆ ใช้งานได้กับ dataURLS หรือไม่ (โปรดแจ้งให้เราทราบว่าอีกตัวอย่างหนึ่งทำงานกับ dataURLS หรือไม่)

 <iframe class="page-icon preview-pane" frameborder="0" height="352" width="396" src="data:application/pdf;base64, ..DATAURLHERE!... "></iframe>

3

น่าจะเป็นโซลูชันเบราว์เซอร์ข้ามที่ดีที่สุดสำหรับการแสดงผล pdf บนหน้าเว็บคือการใช้รหัสโครงการ Mozilla PDF.js มันสามารถเรียกใช้เป็นบริการ node.js และใช้ดังต่อไปนี้

<iframe style="width:100%;height:500px" src="http://www.mysite.co.uk/libs/pdfjs/web/viewer.html?file="http://www.mysite.co.uk/mypdf.pdf"></iframe>

บทช่วยสอนเกี่ยวกับวิธีใช้ pdf.js สามารถพบได้ในบทความบล็อก ejectamenta นี้


1

การฝังไม่ใช่แท็กมาตรฐานแม้ว่าวัตถุจะเป็น นี่คือบทความที่ดูเหมือนว่าจะช่วยคุณได้เนื่องจากดูเหมือนว่าสถานการณ์จะไม่ง่ายนัก ตัวอย่างของ PDF รวมอยู่ด้วย


12
การฝังดูเหมือนจะเป็นมาตรฐานสำหรับฉัน - อย่างน้อยใน HTML5
kapa

6
@ bažmegakapaเป็นมาตรฐานตอนนี้กับ HTML5 แต่บทความที่เขาอ้างถึงถูกเขียนขึ้นในปี 2008 และคำตอบของเขาคือจาก 2009 ซึ่งลงวันที่ HTML5
b1nary.atr0phy

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