(Dis-)使用<object>标签嵌入HTML页眉/页脚的优势?

时间:2017-07-15 12:05:25

标签: html object-tag

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

在我的情况下,我不能使用任何服务器端包括例如PHP。我通常也希望避免像JQuery这样的大型库只是为了这么简单的任务。

现在我遇到了https://stackoverflow.com/a/691059/4464570,它建议只使用HTML <object>标记将另一个HTML文件包含到页面中,如下所示:

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

我可能会遗漏一些重要的东西,但对我而言,这种方式似乎完全符合我的需要。它非常简短精确,所有浏览器都支持<object>标记,我不需要包含任何大型库,实际上我甚至不需要任何JavaScript,这样可以阻止用户仍然可以查看正确的页面结构和布局。

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

此外,我是否必须注意有关如何将<object>标记放入主页的任何特殊内容,或者关于我想以这种方式包含的文件结构?例如,嵌入式文件可能是包含<!DOCTYPE><html><head><body>的完整HTML文档,或者应该/必须删除所有这些结构并仅保留内部HTML元素?在这种方式下嵌入HTML中使用JavaScript或CSS有什么特别之处吗?

1 个答案:

答案 0 :(得分:2)

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

框架曾经在Web开发的早期非常流行,然后以<frame>标签的形式出现。然而,他们通常不赞成,你应该尽可能少地使用它们。

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

子框架中的HTML内容无法与父级进行通信。例如,您不能使用父HTML中的脚本与子进程通信,反之亦然。这使得当您想要显示除静态文本之外的任何内容时,它对于提供您自己的内容并不是非常有用。

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

您也无法使用它来提供大量外部内容。许多网站(包括例如SO)都会发送X-Frame-Options标题及其值为SAMEORIGIN的网页。这可以防止您的内容被加载和显示。