<embed>与<object>


164

当我要显示Adobe PDF查看器时,在HTML文件中使用哪个正确/最佳标记?

现在,我正在使用下面的代码,但是有一些奇怪的副作用(例如,它似乎抢走了我设置到另一个<input>文本框的起始焦点;它似乎在jQueryUI Resizeable类中不能很好地发挥作用;等等。)

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

我甚至可以对<object>标签做同样的事情?使用一个标签相对于另一个标签是否有优点/缺点?


21
现在在HTML5中使用<embed>了吗?什么是最好的方法?
VinnyG 2011年

@VinnyG <embed>现已正式与HTML5标准的标签,但你应该预见至少一些与旧版本的浏览器兼容性问题。
b1nary.atr0phy 2013年

Answers:


169

对象vs.嵌入-为什么不总是使用embed?

底线:目标是好,嵌入是旧的。除了IE的PARAM标记外,如果浏览器不支持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>

此版本未通过验证



7
尽管它<embed>是HTML5标准的一部分,但在我看来,这<object>是更好的选择,因为它与较旧的浏览器兼容并且能够显示替代内容。有什么想法吗?
拉斐尔2012年

4
@raphaelcm请允许我扮演魔鬼的拥护者。如果保持与过时的浏览器的兼容性很重要,HTML将永远不会发展。在这里重要的是市场份额,尤其是关于浏览器版本。
b1nary.atr0phy 2013年

7
为什么会接受?我以为<embed>是HTML5标准标记。
fabspro 2014年

2
我认为<embed>将是更好的选择。它是HTML5标准,而Object的许多功能(属性)已被弃用,以将其功能与embed标签分开。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方法,尽管该方法与跨浏览器不兼容(例如,无法在Chrome或android系统中运行,并且可能在其他操作系统中->提示下载)。它适用于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的指南,请参见此jectatementa博客文章。


1

嵌入不是标准标记,尽管对象是。下面是一篇文章,看起来像它会帮助你,因为它似乎情况并非如此简单。包含PDF的示例。


12
嵌入似乎对我来说很标准 -至少在HTML5中。
卡帕2012年

6
@bažmegakapaHTML5现在肯定是标准的,但是他指的那篇文章是在2008年写的,他的回答是2009年的,它早于HTML5。
b1nary.atr0phy

2
@ b1naryatr0phy这就是为什么我添加评论。我认为他应该更新或删除答案,因为它不再重要了,因此不会对将来的访问者有所帮助。
kapa
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.