ti-enxame.com

Arquivo de inclusão HTML5

Qual é a melhor maneira - compatível com vários navegadores para incluir um arquivo HTML no HTML5.

Estou criando um site em HTML5 e gostaria de ter a nav em um arquivo separado e incluído nas páginas do site.

48
Roula

Use a tag object :

<object name="foo" type="text/html" data="foo.inc"></object>

foo.inc deve incluir HTML válido.

Nota: NÃO use o estilo <object/> de fechamento automático. Isso impedirá o conteúdo após a exibição da tag.

71
Rafa

<object> funciona bem, embora não seja uma tag de fechamento automático, portanto deve ser assim (caso contrário, não é HTML5 válido):

_<object name="foo" type="text/html" data="foo.inc"></object>
_

<embed> também pode ser usado para incluir conteúdo html externo (e qualquer tipo MIME):

_<embed type="text/html" src="foo.inc">
_
49
edom

Para HTML5, você pode tentar:

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

( https://www.html5rocks.com/en/tutorials/webcomponents/imports/ )

Se esse recurso não for implementado em um navegador de destino, você poderá usar o polyfill de componentes da web: http://webcomponents.org/polyfills/

5
dennis

Se você estiver escrevendo HTML puro, os arquivos de inclusão não são possíveis. No entanto, você pode usar o recurso de inclusão do lado do servidor (SSI) do Apache ou usar alguma linguagem de script (Python, Ruby, PHP etc.) para montar as páginas.

2
Scott Severance

Ok, essas são todas as respostas válidas, mas, com exceção do método javascript, os outros são bastante limitados.

O php um está estritamente vinculado ao provedor.
O objeto e o incorporar, em vez disso, incluem o código sem nenhum estilo (exceto se você o declarar no arquivo incluído).

Então, quero dizer, isso não é bom o suficiente, pois o php ou asp incluem que funciona bem, mas precisa de um servidor que o suporte.

1
d8ressa

A maneira correta é usar inclusões do lado do servidor. A solução PHP requer que PHP seja instalado apenas para incluir arquivos, as soluções html não são suportadas pelas especificações mesmo que funcionem (a especificação não discrimina os tipos MIME, mas especifica sua intenção, o que significa que poderá ser explicitamente evitado no futuro, se essas tags não forem apenas totalmente obsoletas).

Aqui está o meu post de um tópico semelhante perguntando sobre a mesma coisa:


Se o seu servidor suportar SSI (inclusões do lado do servidor), você poderá colocar o seguinte nos seus arquivos html sem precisar de uma linguagem de script ou qualquer outra coisa. O Apache tem o SSI ativado por padrão (eu acho?)

<!--#include file="same_path_file.html" -->
<!--#include virtual="docroot_file.html" -->

"file" é relativo ao arquivo atual e, provavelmente, o que você usaria para incluir arquivos relacionados como "relevantes_article_poll.html".

"virtual" é relativo à raiz do documento (ou seja, a raiz do site) e você o usaria para incluir arquivos globais, como cabeçalhos e rodapés.

Realmente não importa qual você escolher, mas é útil saber a diferença entre os dois.

Além disso, a diretiva include faz uma nova solicitação http interna ao servidor para cada arquivo, para que você possa incluir arquivos php e os gostos, e eles serão executados como deveriam.

Aqui está uma visão geral útil do SSI: http://en.wikipedia.org/wiki/Server_Side_Includes

1
Tor Valamo

Não conheço nenhuma maneira de fazê-lo em HTML, mas se você o fizesse em PHP, é bastante simples, se você tivesse uma determinada barra de navegação que desejava incluir em todas as páginas que você colocaria:

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

Colocar o código HTML em uma página separada para a navegação, e o PHP automaticamente o colocaria lá toda vez. E você não precisa saber PHP para criar PHP páginas em si, basta usar a marcação HTML geral em um arquivo PHP e funcionará bem.

0
Aaron Lee