我正在寻找一种简单的方法来使我的网站模块化,并将常见的部分(如页眉和页脚)提取到单独的文件中。
在我的情况下,我不能使用任何服务器端包括例如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有什么特别之处吗?
答案 0 :(得分:2)
对HTML内容使用<object>
标记与使用<iframe>
非常相似。两者都只是将一个网页作为单独的文档加载到一个框架内,该框架本身就是主文档的子框架。
框架曾经在Web开发的早期非常流行,然后以<frame>
标签的形式出现。然而,他们通常不赞成,你应该尽可能少地使用它们。
子框架中的HTML内容无法与父级进行通信。例如,您不能使用父HTML中的脚本与子进程通信,反之亦然。这使得当您想要显示除静态文本之外的任何内容时,它对于提供您自己的内容并不是非常有用。
您也无法使用它来提供大量外部内容。许多网站(包括例如SO)都会发送X-Frame-Options
标题及其值为SAMEORIGIN
的网页。这可以防止您的内容被加载和显示。