HTML5包含文件

HTML5包含文件,html,Html,在HTML5中包含HTML文件的跨浏览器兼容的最佳方式是什么 我正在用HTML5构建一个站点,希望nav包含在一个单独的文件中,并包含在站点页面中。如果您编写的是纯HTML,则不可能包含文件。但是,您可以使用Apache的服务器端包含(SSI)功能,也可以使用一些脚本语言(Python、Ruby、PHP等)来组装页面。我不知道用HTML做这件事的任何方法,但是如果您要用PHP做这件事,如果您想在刚刚放置的每个页面中都包含一个特定的导航栏,那就足够简单了: <?php include('na

在HTML5中包含HTML文件的跨浏览器兼容的最佳方式是什么


我正在用HTML5构建一个站点,希望nav包含在一个单独的文件中,并包含在站点页面中。

如果您编写的是纯HTML,则不可能包含文件。但是,您可以使用Apache的服务器端包含(SSI)功能,也可以使用一些脚本语言(Python、Ruby、PHP等)来组装页面。

我不知道用HTML做这件事的任何方法,但是如果您要用PHP做这件事,如果您想在刚刚放置的每个页面中都包含一个特定的导航栏,那就足够简单了:

<?php include('nav.php') ?>


将HTML代码放在一个单独的nav页面中,PHP每次都会自动将其放入其中。您不必了解PHP来制作PHP页面本身,您只需在PHP文件中使用通用HTML标记即可。HTML5由三个组件组成:HTML、CSS和JavaScript。所以我们必须使用所有这些来利用HTML5

外部HTML代码可以使用javascript包含在另一个HTML文档中。唯一的问题是,您必须将外部代码存储在.js文件中。以下是如何包含html段落的示例:

<!DOCTYPE html>
<html>
    <head>
    <title>Main Page</title>
        <script type="text/javascript" src="include_html.js"></script>
    </head>
    <body>
        <script type="text/javascript">
            paragraph();
        </script>
    </body>
</html> 

主页
第()款;
include_html.js的内容

function paragraph()
{
        document.write("<p> This is an HTML paragraph </p>");
}
函数段落()
{
写(“这是一个HTML段落”

”; }
使用标签:


foo.inc应包含有效的HTML

注意:不要使用自动关闭
样式。这将阻止标记后的内容显示。

工作正常,尽管它不是一个自动关闭标记,所以它应该是这样的(否则它不是有效的HTML5):


也可用于包含外部html内容(以及任何MIME类型):


好的,这些都是有效的答案,但是除了javascript方法之外,其他方法都非常有限。

phpone严格绑定到提供者
对象嵌入包含没有任何样式的代码(除非您在包含的文件中声明该代码)。


因此,我的意思是,这还不够好,因为php或asp include运行良好,但需要一个支持它的服务器。

正确的方法是使用服务器端include。PHP解决方案要求安装PHP只是为了包含文件,html解决方案不受规范支持,即使它们可以工作(规范没有区分mime类型,但它确实指定了它的意图,这意味着如果这些标记不是完全不推荐的话,将来可能会显式阻止)

以下是我在类似帖子中的帖子,询问同样的问题:


如果您的服务器支持SSI(服务器端包括),您可以将以下内容放入html文件中,而无需使用脚本语言或其他任何语言。Apache默认启用了SSI(我想是吧?)


“file”是相对于当前文件的,可能是用于包含相关文件(如“relevant_article_poll.html”)的

“virtual”是相对于文档根(即您的网站根)的,您可以使用它来包含全局文件,如页眉和页脚

选择哪一个并不重要,但了解两者之间的区别是很有用的

另外,include指令为每个文件向服务器发出一个新的内部http请求,因此您可以包含php文件等,它们将按其应该的方式执行

以下是SSI的有用概述:

对于HTML5,您可以尝试:

<head>
    <link rel="import" href="/path/to/imports/stuff.html">
</head>

()


如果此功能未在目标浏览器中实现,则可以使用webcomponents polyfill:

+1…并且浏览器兼容性不是一个因素。(就包含而言,如果HTML本身不好,那是另一回事。)Javascript也是一种选择。位于SSI和服务器端脚本语言之间。如果禁用Javascript,则会出现一个巨大的问题,但是如果是导航问题。+1这应该是正确的答案。它很容易实现,适用于所有浏览器,并且具有长期的稳定性。不,HTML5由1个组件组成:。这本身就是一个标准。不要尝试这一点,这是误导。绝对棒极了,谢谢你!在Konqueror、Firefox和Chromium中工作。你还想要什么?:-)正如@edom所说,这与iframe的行为没有什么不同,用户不喜欢它,而且“include”之后的内容没有显示出来(在Chrome中,我没有测试其他浏览器)。W3C反对自动关闭标记。我用一个结尾的
替换了它,它进行了验证并显示了以下内容。我只是尝试了一下,但没有成功。相反,Chrome在加载页面时立即下载了foo.inc。WTF???虽然“很酷”,但这不是一个好的解决方案。HTML不是预处理器语言。对象不适用于此,也不能保证这种行为。除了不能使用PHP的百万和一个项目外,它非常有用。整个问题的荒谬之处——没有内置的包含html的功能,这一点怎么强调都不过分。几十年来,我从未在没有预处理器指令的语言中工作过,包括HTML以外的文件。+1你应该得到答案(在这个问题上获得19票,没有答案?!)。在html5中需要结束标记,否则,根据html5规范,以下任何内容都不会显示(在Chrome中,我没有测试其他内容),这也是错误的。虽然它“有效”(规范不区分mime类型),但embed不适用于此。它的预期用途是用于非html元素,如插件元素。对于nor或方法,CSS没有应用于包含的html for me。客户端不推荐使用它。但不必是服务器端。仍在寻找服务器将其编译成一个页面(模板)。和polyfill,以备打开时使用
<object name="foo" type="text/html" data="foo.inc"></object>
<embed type="text/html" src="foo.inc">
<!--#include file="same_path_file.html" -->
<!--#include virtual="docroot_file.html" -->
<head>
    <link rel="import" href="/path/to/imports/stuff.html">
</head>