Perché nessun tag HTML include il lato client?

18

Ho avuto una domanda che mi è stata posta l'altro giorno da un altro programmatore. Ricordo (molto tempo fa) chiedendo lo stesso. Perché un tag di inclusione sul lato del browser non è mai stato considerato? O era?

Specificamente con un tag che indica al browser di includere altro codice HTML da altre fonti. per esempio. %codice%. Molte persone eseguiranno chiamate javascript e riempiranno <include src="http://server/foo/bar.html"> per ottenere lo stesso risultato, quando lo stesso al di fuori del motore javascript potrebbe essere realizzato dal browser.

Sarebbe stato penoso aver annidato innerHTML s <HTML> s (vale a dire) ma dobbiamo comunque considerare questo aspetto ovunque.

    
posta Jé Queue 25.09.2010 - 06:36
fonte

6 risposte

12

Sono l'ultima persona al mondo che si ricorda di ( solo Netscape 4 ) layer e ilayer tag?

Netscape 4 ha permesso anche il tag div di avere una% attributo disrc, che ha compiuto la stessa cosa.

Netscape li ha inviati al W3C, che ha scelto di non includerli: usa iframe invece.

    
risposta data 27.09.2010 - 23:42
fonte
14

Why was a browser-side include tag never considered? Or was it?

È stato sicuramente richiesto da tutti i principianti web author che non avevano ancora elaborato Server Side Includes, nei primi giorni sulla lista www-html. Ma in quei giorni W3 era felice di ignorare completamente la pressione dell'autore del web.

Se fosse consentita l'inclusione tra siti, sarebbe un disastro per la sicurezza. È possibile inserire una pagina dalla banca dell'utente e leggerne il contenuto. (Originariamente, lo scripting DOM era limitato, ma si poteva ancora leggere da document.links , document.images , funzioni di scripting abbandonate dalla pagina di destinazione, ecc. Da allora puoi fare ciò che ti piace con il contenuto importato.)

Se l'inclusione tra siti non era consentita ... beh, allora la funzionalità non avrebbe alcun vantaggio rispetto agli include lato server. Sarebbe più, più lento il lavoro per il client per fare che il server avrebbe potuto affrontare meglio. A differenza di <iframe> , un inclusivo dovrebbe bloccare il caricamento della pagina. Le SSI sarebbero in ogni modo superiori.

    
risposta data 25.09.2010 - 10:01
fonte
10

Lo hanno fatto. È diventato il tag <frameset> . Non molto tempo dopo, hanno aggiunto il tag <iframe> .

La maggior parte dei primi server Web supportava le inclusioni lato server, quindi è probabile che l'inclusione testuale lato client non fosse necessaria, dato che la stessa funzionalità era disponibile anche con i frame.

    
risposta data 25.09.2010 - 06:52
fonte
3

L'oggetto esegue ancora il rendering in una cornice e non hai accesso a DOM ai "dati". Quello che gli sviluppatori avrebbero dovuto dare anni fa è un modo per includere frammenti con un semplice tag. Anche se questo tag avesse restrizioni di sandbox di dominio sarebbe molto utile compartimentare le funzionalità, migliorare la manutenzione e sfruttare il caching del browser.

So che ci sono un sacco di buoni plugin jquery che fanno questo e molti script lato server, ma non ci sono buone ragioni per non supportare un tag simile. IMO è una buona domanda "Perché nessun tag include lato client?"

Se ti piace jquery, qui c'è un buon script per i client: inc: un lato client minuscolo include il plugin jQuery JavaScript

    
risposta data 13.01.2011 - 06:32
fonte
2

Hai provato

<object  type="text/html" data="page.html" height="500" width="500">
What I see if that didn't work 
</object>

Penso che sia implementato nella maggior parte dei browser.

    
risposta data 30.09.2010 - 22:48
fonte
2

Le varianti di un tag <include> sono state effettivamente prese in considerazione nella cronologia precoce dell'HTML , ma non sono mai andate molto lontano.

    
risposta data 21.09.2011 - 17:21
fonte

Leggi altre domande sui tag