2015-05-13 13 views
5

OK, so come includere il contenuto HTML da un file separato utilizzando il tag <object>. Quello che non riesco a trovare alcuna informazione su è ciò che è permesso/richiesto all'interno del file HTML incluso. Il file incluso può essere semplicemente un testo con alcuni tag HTML oppure deve essere un file HTML completo con intestazioni, <head> e <body>? Come appare questo all'interno del DOM del documento originale, se appare all'interno di quel DOM? O i due documenti sono trattati interamente separatamente?Utilizzo del tag <object> per includere il contenuto HTML: formato consentito del file incluso

Sì, lo so, potrei sperimentare per vedere cosa funziona. Tuttavia, conosco abbastanza bene l'HTML per sapere che ciò che accade per funzionare, per ora, potrebbe non essere il modo corretto di fare le cose. Non mi aspetto che qualcuno elencherà tutte le regole qui, ma se qualcuno potesse pubblicare alcuni link lo apprezzerei molto. Questo è un argomento che ha dimostrato di superare la difficoltà di ricerca su Internet.

+0

@ j08691, Grazie per aver modificato il mio post. Mi stavo chiedendo se le parentesi angolari sarebbero uscite come codice o come semplici parentesi angolari. – GrantRobertson

risposta

1

In 13.5 Notes on embedded documents, credo di aver trovato la risposta a entrambe le mie domande. Il secondo paragrafo dice,

Un documento incorporato è completamente indipendente dal documento in cui è incorporato .Ad esempio, gli URI relativi all'interno del documento incorporato si risolvono in base all'URI di base del documento incorporato, non quello del documento principale. Un documento incorporato viene reso solo all'interno di un altro documento (ad es. In una sottofinestra); rimane altrimenti indipendente.

Quindi, sì, come hanno detto @Quentin e @Sinan, richiederebbe che il file .html incorporato sia un file .html completo e valido. E, no, non diventerebbe parte del DOM del documento originale.

Grazie a tutti per la loro pronta assistenza. La community di StackOverflow continua a stupirmi.

1

<object> in HTML5 e <object> in HTML4.

L'elemento oggetto rappresenta contenuto esterno, che, a seconda del tipo di contenuto, sarà trattato come un'immagine, come contesto di esplorazione nidificato o come contenuto esterno da elaborare da un plug-in.

motivazione da HTML4:

precedenti versioni di HTML ha permesso agli autori di includere immagini (via IMG) e applet (APPLET via). Questi elementi hanno diverse limitazioni:

  • Non riescono a risolvere il problema più generale di come includere nuovi e futuri tipi di media.
  • L'elemento APPLET funziona solo con applet basate su Java. Questo elemento è deprecato in favore di OBJECT.
  • Presentano problemi di accessibilità.

Per risolvere questi problemi, HTML 4 introduce l'elemento OBJECT, che offre una soluzione generica per l'inclusione di oggetti generici. L'elemento OBJECT consente agli autori HTML di specificare tutto ciò che è richiesto da un oggetto per la sua presentazione da parte di un agente utente: codice sorgente, valori iniziali e dati di runtime. In questa specifica, il termine "oggetto" è usato per descrivere le cose che le persone vogliono inserire nei documenti HTML; altri termini comunemente usati per queste cose sono: applet, plug-in, i gestori dei media, ecc (sottolineatura mia)

Quindi, in sostanza, <object> elementi sono abbastanza generici. L'unica vera condizione è che ci sia bisogno di una qualche funzionalità sul lato client per rendere l'elemento.

Ad esempio:

<object data="test.html" height="50" width="50"></object> 

rende i contenuti di test.html in una zona molto piccola (senza scala!) Con Firefox, mentre links visualizza solo [OBJ].

Embedded Content spiega cosa succede quando si incontra un elemento <object>.

causa dell'algoritmo sopra, il contenuto di elementi oggetto agiscono contenuto come fallback, utilizzato solo quando risorse di riferimento non possono essere visualizzati (ad esempio perché ha restituito un errore 404). Ciò consente a più elementi di oggetti di essere annidati l'uno dentro l'altro, indirizzando più agenti utente con capacità diverse, con l'agente utente che sceglie il primo che supporta. (sottolineatura mia)

Credo che risponde alla domanda di come il <object> entra nel DOM. Se fosse diversamente, per esempio, l'elemento id s nei documenti inclusi potrebbe calpestare il DOM della pagina host.

Indipendentemente dalle funzionalità che si osservano nei programmi utente correnti, è necessario assicurarsi che i documenti HTML inclusi siano ben strutturati e validi.

Più in basso, si consideri l'esempio incluso:

In questo esempio, una pagina HTML è incorporato in un altro utilizzando l'elemento oggetto.

<figure> 
    <object data="clock.html"></object> 
    <figcaption>My HTML Clock</figcaption> 
    </figure> 

Nota esempio si riferisce a una pagina HTML — non un frammento.

+4

Voglio dire, l'OP ha chiesto "se qualcuno potesse postare link", ma quella non è stata l'unica cosa che hanno chiesto. Spero che tu sappia meglio di postare solo risposte di collegamento. – BoltClock

+1

@BoltClock Spero che tu sappia meglio di saltare su qualcuno entro 10 secondi dalla pubblicazione del primo frammento di una risposta. –

+7

@ SinanÜnür: Se non volevi che la gente lo vedesse, perché lo hai pubblicato? –

1

<object> è un modo per includere un oggetto multimediale generico.

Un documento HTML è un esempio di tale.

La specifica HTML non descrive un mezzo per fornire un frammento di HTML a un browser, solo un documento completo. Non esiste un tipo MIME standard per un frammento di HTML.

Pertanto: è necessario utilizzare documenti HTML completi.

Detto questo, se si sta seguendo questa strada, quasi sicuramente starai meglio usando che ha un set di API e documentazione molto più completo e robusto che lo circonda.

Come appare questo all'interno del DOM del documento originale, se appare all'interno di quel DOM?

Come elemento oggetto. I nodi figli di cui sono qualsiasi contenuto alternativo fornito tra il tag iniziale e quello finale.

Oppure i due documenti sono trattati interamente separatamente?

Sì, proprio come un iframe.

+0

Grazie. Guarderò in iframe. – GrantRobertson

Problemi correlati