< embed > vs. < object >

当我想要显示 AdobePDF 查看器时,在 HTML 文件中使用哪个标记是正确的/最好的?

现在我正在使用下面的代码,但是有一些奇怪的副作用(例如,它似乎偷走了我设置到另一个 <input>文本框的初始焦点; 它似乎不能很好地运行 jQueryUI 可调整类; 等等)

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

我甚至可以对 <object>标签做同样的事情吗?使用一个标签与使用另一个标签相比有什么优缺点吗?

230801 次浏览

对象与嵌入-为什么不总是使用嵌入?

底线: 对象是好的,嵌入是旧的。除了 IE 的 PARAM 标签之外,如果浏览器不支持 OBJECT 引用的插件,那么 OBJECT 标签之间的任何内容都会被渲染,而且显然,无论是否渲染,内容都会被请求 http。

object是当前在页面上嵌入内容的标准标记。Netscape (沿着 ABC2)收录了 embed之前,任何像 object一样的东西都在 W3c的头脑中。

这就是你的 包括附有 object的 PDF:

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

这个版本的 无效

嵌入不是标准的标记,但对象是。这里的 一篇文章看起来会帮助你,因为情况似乎不是那么简单。其中包括一个 PDF 示例。

其他一些选择:

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

您也可以使用 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>

也许在网页上显示 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 博客文章中找到

2020年更新答案:

<object><embed>都包含在 HTML 生活标准 (2020年9月)中。


<object>

Object 元素可以表示外部资源, 根据资源的类型,将被视为 图像,作为一个子浏览上下文,或作为一个外部资源 由插件处理。


<embed>

Embed 元素为外部(通常是非 HTML)应用程序或交互式内容提供集成点。


使用一个标签与使用另一个标签相比有什么优缺点吗?

Mozilla Developer Network意见似乎(尽管相当微妙)非常有利于 <object>而不是 <embed>,但绝大多数情况下,MDN 希望推荐在任何可以的地方,都避免完全嵌入外部内容。

[ ... ]你不太可能经常使用这些元素ー Applet 已经很多年没有使用了,Flash 已经不再很流行了,因为 原因的数量(见下面反对插件的案例) ,PDF 往往 更好地链接到比嵌入,以及其他内容,如图像 和视频有更好,更容易的元素来处理这些。插件 这些嵌入方法实际上是一种遗留技术,我们 主要是提到它们,以防你在某些方面遇到它们 内部网或企业项目等情况。

曾几何时,插件在网络上是不可或缺的 你不得不安装 AdobeFlashPlayer 来观看电影的日子 然后你不断收到烦人的更新提醒 Flash Player 和你的 JRE 自从变得更加强健,那些日子已经结束了。因为实际上 所有的应用程序,是时候停止交付内容,这取决于 然后开始利用 Web 技术。

来源: http://strong > < a href = “ https://developer.mozilla.org/en-US/docs/Learn/HTML/media _ and _  嵌入/其他 _  嵌入技術 # The _% 3Cembed% 3E _ and _% 3Cobject% 3E _ Elements”rel = “ noReferrer”> https://developer.mozilla.org/en-us/docs/learn/html/multimedia_and_embedding/other_embedding_technologies#the_%3cembed%3e_and_%3cobject%3e_elements