<embed> vs. <предмет>


164

Який правильний / найкращий тег використовувати у моєму HTML-файлі, коли я хочу відобразити переглядач Adobe PDF?

Зараз я використовую наведений нижче код, але є дивні побічні ефекти (наприклад, це, здається, вкрав початковий фокус, який я встановив до іншого <input>текстового поля; він, схоже, не дуже добре грає з класом jQueryUI Resizeable; тощо)

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

Чи можу я зробити те ж саме з <object>тегом? Чи є переваги / недоліки використання одного тегу проти іншого?


21
А тепер з <embed> в HTML5? Який найкращий спосіб?
VinnyG

@VinnyG <embed>зараз офіційно є стандартним тегом з HTML5, але ви повинні передбачити хоча б деякі проблеми сумісності зі старими версіями браузера.
b1nary.atr0phy

Відповіді:


169

OBJECT vs. 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, хоча це не сумісний з браузером (наприклад, не працює в хромі чи андроїді та, ймовірно, інші -> замість цього запропонує завантажити). Він працює з URL-адресами dataURL та звичайними URL-адресами, не впевнений, чи працюють інші приклади з 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, можна знайти в цій статті блогу про ежектаменти


1

Embed - це не стандартний тег, хоча об’єкт є. Ось стаття , схожа на те, що вам допоможе, оскільки, здається, ситуація не така проста. Приклад для PDF входить.


12
Вбудовування здається мені цілком стандартним - принаймні в HTML5.
капа

6
@ bažmegakapa Це, звичайно, зараз стандарт HTML5, але ця стаття, на яку він посилається, була написана ще у 2008 році, а його відповідь - з 2009 року, яка передує HTML5.
b1nary.atr0phy

2
@ b1naryatr0phy Тому я додав коментар. Він повинен або оновити, або видалити відповідь, на мій погляд, оскільки це вже не актуально, тому не допоможе майбутнім відвідувачам.
капа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.