Врезанный против ОБЪЕКТА

121

Какой правильный/лучший тег использовать в моем HTML файле, когда я хочу отображать программу просмотра Adobe PDF? Прямо сейчас я использую код ниже, но есть странные побочные эффекты (например, он, кажется, украл начальный фокус, который я установил в другое текстовое поле INPUT, он, похоже, не очень хорошо работает с классом jQueryUI Resizeable и т.д.)

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

Могу ли я сделать то же самое с тегом OBJECT? Существуют ли преимущества/недостатки использования одного тега по сравнению с другим?

  • 18
    А теперь с <embed> в HTML5? Какой самый лучший способ?
  • 0
    @VinnyG <embed> теперь официально является стандартным тегом для HTML5, но вы должны предвидеть, по крайней мере, некоторые проблемы совместимости со старыми версиями браузера.
Теги:
pdf

5 ответов

130
Лучший ответ

OBJECT vs. EMBED - почему не всегда использовать встраивание?

Итог: OBJECT is Good, EMBED - Старый. Помимо тегов IE PARAM, любой контент между тегами OBJECT будет отображаться, если браузер не поддерживает подключенный OBJECT плагин, и, по-видимому, контент получает HTTP-запрос независимо от того, будет ли он отображаться или нет.

object - это текущий стандартный тег для встраивания чего-либо на страницу. embed был включен Netscape (вдоль img), прежде чем что-либо вроде object было на w3c mind.

Вот как вы включают 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>

Эта версия не проверяет.

  • 42
    <embed> является фактически частью HTML5 dev.w3.org/html5/spec/Overview.html#the-embed-element
  • 4
    Несмотря на то, что <embed> является частью стандарта HTML5, мне кажется, что <object> является лучшим выбором из-за совместимости со старыми браузерами и способности отображать альтернативный контент. Мысли?
Показать ещё 9 комментариев
3

Некоторые другие опции:

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

Вы также можете использовать метод iframe, хотя это не совместимо с перекрестным браузером (например, не работает в хром или андроид и, возможно, другие → вместо этого запрашивает загрузку). Он работает с dataURL и обычными URLS, не уверен, что другие примеры работают с dataURLS (пожалуйста, дайте мне знать, работают ли другие примеры с dataURLS?)

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

Наверное, лучшим решением для браузера для просмотра 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
    Мне кажется, Embed вполне стандартен - по крайней мере, в HTML5.
  • 6
    @ bažmegakapa Это, конечно, сейчас стандартно для HTML5, но эта статья, на которую он ссылается, была написана еще в 2008 году, а его ответ - с 2009 года, предшествующего HTML5.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню