(嵌入 HTML header/footer 和 <object> 标签的缺点?

(Dis-)advantages of embedding HTML header/footer with <object> tags?

我正在寻找一种简单的方法来使我的网站模块化,并将经常出现的常见部分(如页眉和页脚)提取到单独的文件中。

就我而言,我不能使用任何服务器端包含,例如PHP。我通常也想避免为了这样一个简单的任务而包含像 JQuery 这样的大型库。

现在我遇到 ,它建议简单地使用 HTML <object> 标记将另一个 HTML 文件包含到页面中,如下所示:

<object data="parts/header.html" type="text/html">header goes here</object>

我可能在这里遗漏了一些重要的东西,但对我来说,这种方式似乎完全符合我的需要。它非常简短和精确,所有浏览器都很好地支持 <object> 标签,我不需要包含任何大库,实际上我什至不需要任何 JavaScript,这允许用户阻止仍然可以查看正确的页面结构和布局。

那么,这种方法有什么我目前还没有意识到的缺点吗?我怀疑的主要原因是,在关于如何包含 HTML 片段的数十个答案中,只有一个推荐 <object> 而所有其他人都采用 PHP 或 JavaScript/JQuery 方式.

此外,关于如何将 <object> 标记放入我的主页,或者关于我想以这种方式包含的文件的结构,我是否需要注意任何特别的地方?比如,嵌入文件可能是一个完整的 HTML 文档,其中包含 <!DOCTYPE><html><head><body> 或 should/must 我去掉所有这些结构只留下内部 HTML 元素?以这种方式在 HTML 中使用 JavaScript 或 CSS 有什么特别之处吗?

<object> 标签对 HTML 内容的使用与 <iframe> 的使用非常相似。两者都只是将网页作为单独的文档加载到框架中,该框架本身就是主文档的 child。

frames在web开发的早期曾经很流行,后来以<frame>标签的形式出现。然而,它们通常不被接受,您真的应该尽可能少地使用它们。

为什么不使用这种技术来显示您自己的内容

child 框架中的 HTML 内容无法与 parent 通信。例如,您不能使用 parent HTML 中的脚本与 child 进行通信,反之亦然。当您想显示静态文本以外的任何内容时,这对于提供您自己的内容不是很有用。

为什么不使用这种技术来显示别人的内容

您也不能使用它来提供大量外部内容。许多网站(包括例如 SO)发送一个 X-Frame-Options header 连同其具有值 SAMEORIGIN 的网页。这会阻止您的内容被加载和显示。