HTML5包含文件
什么是最好的方式 – 跨浏览器兼容,包括一个HTML5的HTML文件。
我正在build立一个HTML5网站,并希望在一个单独的文件,并包含在网站页面的导航。
使用对象标签:
<object name="foo" type="text/html" data="foo.inc"></object>
foo.inc应该包含有效的HTML。
注意:不要使用自闭的<object/>
样式。 这将防止显示标签后的内容。
<object>
工作正常,虽然它不是一个自我closures的标签,所以它应该看起来像这样(否则它不是有效的HTML5):
<object name="foo" type="text/html" data="foo.inc"></object>
<embed>
也可用于包含外部html内容(以及任何MIMEtypes):
<embed type="text/html" src="foo.inc">
如果你正在写纯HTML,包含文件是不可能的。 但是,您可以使用Apache的服务器端包含(SSI)function,也可以使用一些脚本语言(Python,Ruby,PHP等)来组装页面。
对于HTML5,您可以尝试:
<head> <link rel="import" href="/path/to/imports/stuff.html"> </head>
( https://www.html5rocks.com/en/tutorials/webcomponents/imports/ )
如果此function未在目标浏览器中实现,则可以使用webcomponents填充: http ://webcomponents.org/polyfills/
正确的方法是使用服务器端包括。 PHP解决scheme需要PHP来安装只是为了包含文件,HTML解决scheme不支持规范,即使它们工作(规范不区分MIMEtypes,但它确实指定了它的意图,这意味着它可能是明确的如果这些标签不是完全不赞成的话,将来会被阻止)。
这是我的post从类似的线程询问同样的事情:
如果你的服务器支持SSI(服务器端包含),你可以把下面的内容放在你的html文件中,而不需要脚本语言或其他东西。 Apache默认启用了SSI(我认为?)
<!--#include file="same_path_file.html" --> <!--#include virtual="docroot_file.html" -->
“文件”是相对于当前的文件,可能是什么你会用于包括相关的文件,如“相关的_article_poll.html”。
“虚拟”是相对于文档根目录(即你的网站根目录),你可以用它来包含全局文件,如页眉和页脚。
select哪一个并不重要,但是了解两者之间的区别是有用的。
另外,include指令会为每个文件向服务器发出一个新的内部http请求,所以你可以包含php文件和类似的东西,并且它们将被执行。
这是一个有用的SSI概述: http : //en.wikipedia.org/wiki/Server_Side_Includes
好吧,这些都是有效的答案,但除了JavaScript方法,其他人都相当有限。
PHP的一个是严格绑定到提供者。
对象和embedded代替了包含没有任何样式的代码(除非在包含的文件中声明它)。
所以我的意思是这不够好的PHP或ASP包括工作正常,但需要一个支持它的服务器。
我不知道有什么方法可以用HTML来做,但是如果你用PHP来做,很简单,如果你在每个页面中都有一个你想要的导航条,
<?php include('nav.php') ?>
将HTML代码放置在一个单独的导航页面中,PHP会自动在每个页面中都敲击它。 而且你不需要知道PHP本身就可以创buildPHP页面,只需要在PHP文件中使用一般的HTML标记就可以了。
HTML5由3个组件组成: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>"); }