Html <;嵌入>;vs.<;对象>;

Html <;嵌入>;vs.<;对象>;,html,pdf,embed-tag,Html,Pdf,Embed Tag,当我想显示Adobe PDF viewer时,在我的HTML文件中使用哪个标记是正确的/最好的 现在我正在使用下面的代码,但是有一些奇怪的副作用(例如,它似乎窃取了我设置到另一个文本框的起始焦点;它似乎与jQueryUI可调整大小的类没有很好的配合;等等) 我甚至可以用标签做同样的事情吗?使用一个标签与使用另一个标签相比,有优点/缺点吗? 底线:对象是好的,嵌入是旧的。除了IE的PARAM标记外,如果浏览器不支持对象的引用插件,则对象标记之间的任何内容都将被呈现,而且显然,无论是否呈现,内容

当我想显示Adobe PDF viewer时,在我的HTML文件中使用哪个标记是正确的/最好的

现在我正在使用下面的代码,但是有一些奇怪的副作用(例如,它似乎窃取了我设置到另一个
文本框的起始焦点;它似乎与jQueryUI可调整大小的类没有很好的配合;等等)


我甚至可以用
标签做同样的事情吗?使用一个标签与使用另一个标签相比,有优点/缺点吗?

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

object
是在页面上嵌入内容的当前标准标记。在像
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方法,尽管这种方法不兼容跨浏览器(例如,不适用于chromium或android,可能还有其他系统->而是提示下载)。它适用于dataURL和普通URL,不确定其他示例是否适用于dataURL(请告诉我其他示例是否适用于dataURL?)


在网页上显示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>

2020年更新答案:

和都包括在WHAT-WG HTML生活标准中(2020年9月)


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


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


使用一个标签与使用另一个标签相比,是否有优点/缺点?

Mozilla开发者网络(MDN)似乎(尽管相当微妙地)对
的支持远远超过
,但绝大多数情况下,MDN希望建议尽可能避免完全嵌入外部内容

[…]您不太可能经常使用这些元素-小程序 由于闪存已经多年没有使用了,它已经不再流行了 原因有很多(参见下面针对插件的案例),PDF倾向于 与嵌入的内容和其他内容(如图像)相比,链接的效果更好 视频有更好、更容易处理的元素。插件 这些嵌入方法实际上是一种遗留技术,而我们是 主要是提到他们,以防你在某些场合遇到他们 内部网或企业项目等环境

曾几何时,插件在网络上是不可或缺的。记住 你必须安装AdobeFlashPlayer才能看电影的日子 在线 的然后你不断收到关于更新的恼人警报 Flash Player和Java运行时环境。网络技术已经成熟 因为它变得更加健壮,那些日子已经过去了。实际上 所有应用程序,都应该停止交付依赖于 插件,开始利用网络技术

来源:


实际上是HTML5的一部分尽管
是HTML5标准的一部分,但在我看来
是更好的选择,因为它与旧浏览器兼容,并且能够显示其他内容。思想?@raphaelcm允许我扮演魔鬼的代言人。如果保持与过时浏览器的兼容性如此重要,HTML将永远不会发展,特别是关于浏览器版本。为什么会接受这一点?我认为这是HTML5的标准标签。我认为这将是未来更好的选择。它在HTML5标准中,而Object的许多特性(属性)被弃用,以将其功能与嵌入标记分离。在我看来,object标签几乎是一个“瑞士军刀”标签,而embed是专门为将内容嵌入页面而构建的。那么现在在HTML5中呢?最好的方法是什么?@VinnyG
现在正式成为HTML5的标准标签,但您应该至少预见到一些与旧版本浏览器的兼容性问题。在我看来,嵌入是——至少在HTML5中是如此。@bažmegakapa它现在肯定是HTML5的标准标签,但他所指的那篇文章是2008年写的,他的答案是2009年的,比HTML5早。@b1naryatr0phy这就是我添加评论的原因。在我看来,他应该更新或删除答案,因为它不再相关,因此不会帮助未来的访问者。
<object data="abc.pdf" type="application/pdf">
    <embed src="abc.pdf" type="application/pdf" />
</object>
<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 class="page-icon preview-pane" frameborder="0" height="352" width="396" src="data:application/pdf;base64, ..DATAURLHERE!... "></iframe>
<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>