2010-10-13 11 views
17

Zastanawiam się, czy jest jakiś sposób na umieszczenie treści HTML w innym html przy użyciu tylko html?Równoważnik include() w HTML

zastępstwo PHP

<?php include("file.php"); ?> 

Czy to możliwe?

EDIT:

To przyniósł trochę zamieszania, co potrzebne było „prawie tag html”, który miał funkcjonalność w tym dokumencie HTML w innym.

+1

HTML5 to robi. Ale nie w tej chwili. – Jake

+0

@Jake to dobrze wiedzieć. W jaki sposób zostanie wywołana funkcja? – Trufa

+2

@ Trufa Wierzę, że mówi o "bezszwowym" elemencie HTML5 dla iframe (https://html.spec.whatwg.org/#attr-iframe-seamless), ale w tej chwili wsparcie dla niego jest dość ponure: http : //caniuse.com/#feat=iframe-seamless – waldyrious

Odpowiedz

18

Nie można tego zrobić wyłącznie za pomocą HTML. (Istnieją jednak ramki iframe, ale nie sądzę, że kwalifikuje się w tym przypadku.)

Można to zrobić za pomocą JavaScript. Dostajesz drugi plik przez Ajax i umieszczasz jego zawartość wewnątrz elementu HTML na bieżącej stronie.

+0

Jestem bardzo ograniczony, właściwie pytam o strony z zakładkami fmbl na facebooku. – Trufa

3

Nie ma czegoś takiego. Aby coś takiego zrobić, musisz użyć języka skryptowego po stronie serwera lub JavaScript.

1

Tak jest, ale trzeba ją włączyć w konfiguracji lub .htaccess:

Options +Includes 
AddType text/html .shtml 
AddHandler server-parsed .shtml 

oczywiście z tego youd konieczność zmiany nazwy żadnego pliku, wykonując w tym celu .shtml ... czy można jsut korzystania :

Options +Includes 
AddType text/html .html 
AddHandler server-parsed .html 

sama składnia jest podobna do komentowania:

<!--#include virtual="/footer.html" --> 
+3

to nie jest html. –

+0

no nie, ale to też nie wymaga PHP. – prodigitalson

+0

To jest dołączanie po stronie serwera, a nie zwykły kod HTML. Tak samo łatwo, o ile nie łatwiej, można używać JavaScriptu. –

5

t on byłby tylko iframe, który jest czystym html. ale możesz również użyć javascript, aby uzyskać stronę przez ajax i dołączyć ją do swojej domyslnej domeny

+0

Nie, nie mogę używać elementów iframe. dzięki – Trufa

6

HTML nie ma funkcji do zawarcia dodatkowej treści natywnie. Jednak większość serwerów internetowych mają server-side zawierać oświadczenia:
SSI in Apache
SSI in IIS

2

Może to być kilka lat spóźnione, ale to jest, jak to zrobiłem!

w pierwszym wierszu po tej linii!

<SCRIPT LANGUAGE="JavaScript" src="http://yourdomain.com/header.js"> 

następnie utwórz plik o nazwie "header.js" i wprowadź treść pliku, który chcesz uwzględnić! tak jak ...

<!-- Begin 
document.write('<center>'); 
document.write('<a href="http://alinktosomewhere.co.za">a link 1</a>'); 
document.write('<a href="http://alinktosomewhere.co.za">a link 1</a>'); 
document.write('<a href="http://alinktosomewhere.co.za">a link 1</a>'); 
document.write('<a href="http://alinktosomewhere.co.za">a link 1</a>'); 
document.write('<hr>'); 
document.write('</center>'); 
// End --> 

Mam nadzieję, że ta pomoc!

+2

Jedną wadą jest to, że użytkownicy bez włączonej obsługi JavaScript nie zobaczą treści, która została napisana w ten sposób. Obecnie obejmuje roboty indeksujące wyszukiwarki, więc treści nie będą wyświetlane w wyszukiwarkach. –

+1

Dobra ... Thnx o tym nie myślała! t – Cavemanharris

+0

Nie wiem, dlaczego ma tak wiele negatywnych opinii. Jest tak dobry, jak większość rozwiązań tutaj. – EML

29

Czy próbowałeś:

<object type="text/html" data="file.html"></object> 
+0

To genialne! – cnlevy

+3

Bardzo ładnie, ale mam co najmniej jedną pułapkę, którą znalazłem: przynajmniej w chrome, kliknięcie linku wewnątrz ramki obiektu domyślnie otworzy nowy link INSIDE obiektu, a nie w przeglądarce. Ustawienie docelowych linków na target = "_ top" w dołączonym pliku to jedno możliwe obejście. –

9

Shameless wtyczkę biblioteki, że napisałem to rozwiązać.

https://github.com/LexmarkWeb/csi.js

<div data-include="/path/to/include.html"></div> 

Powyższy odbędzie zawartość /path/to/include.html i wymienić div z nim.

+0

Absolutnie cudownie! Działa doskonale ... – Varun

+1

nie działa dla 'chrome' – javadba

+0

@javadba czy dodałeś' --allow-file-access-from-files' do środowiska wykonawczego chrome, jak opisano w readme repozytorium? –