Alcuni chiarimenti sul DOM

25

Ho cercato di capire il DOM, e anche se ho una buona idea di cosa sia, ci sono alcune idee che non riesco a definire. Elencherò cosa penso sia il DOM e le mie domande saranno in linea.

  1. Il DOM è una rappresentazione completamente orientata agli oggetti della pagina web. Lo standard DOM W3C costituisce la base del DOM implementato nella maggior parte dei browser moderni.

    Quindi il DOM parla di come un documento XML / HTML è rappresentato come un modello a oggetti?

  2. Il DOM non specifica che i documenti devono essere implementati come un albero o un boschetto, né specifica in che modo implementare le relazioni tra gli oggetti.

    In quali altri modi il documento può essere rappresentato?

  3. Quando fai qualcosa di simile -

    document.write('welcome to my home page!');
    

    l'oggetto documento è fornito dal DOM. I metodi di scrittura sono le interfacce esposte a JavaScript dal DOM.

    Quindi gli oggetti e i relativi metodi vengono creati come oggetti JavaScript dal parser DOM e quindi presentati al motore JavaScript? Oppure gli oggetti e i metodi all'interno del motore di analisi DOM nella loro lingua nativa? Ed è esposto al motore JavaScript? Se è così, allora qual è il responsabile della traduzione da JavaScript nella lingua nativa?

  4. Che cosa sono i binding della lingua?

    Il binding lingua è l'insieme di oggetti nativi per la lingua in questione che implementa ciascuna delle interfacce nelle specifiche DOM.

    Gli sviluppatori possono creare collegamenti linguistici dal DOM alla loro lingua semplicemente seguendo l'IDL (Interface Definition Language) nelle specifiche DOM.

    Quindi, se il motore di analisi DOM viene implementato in C ++, significa che quando si creano collegamenti alla lingua seguendo IDL, si creano solo oggetti nella lingua specifica, cioè C ++ che il motore di analisi DOM è costruito con?

posta user1720897 03.06.2013 - 08:07
fonte

1 risposta

18

Quello che segue è la mia migliore lettura delle specifiche e dei riferimenti pertinenti. (Ho trovato gli riassunti sui livelli DOM di Mozilla e i collegamenti associati particolarmente utili.) Incoraggio correzioni o chiarimenti da altri.

So does the DOM talk about how an XML/HTML document is represented as an object model?

Sì. Esistono due parti della specifica DOM Level 1 - Core e . Le specifiche del DOM Core descrivono un DOM generale che potrebbe essere utilizzato per rappresentare qualsiasi documento strutturato. La specifica del DOM HTML descrive come usare il Core DOM per descrivere i documenti HTML in modo specifico e include interfacce specifiche per HTML.

The DOM does not specify that documents must be implemented as a tree or a grove, nor does it specify how the relationships among objects be implemented. In what other ways can the document be represented?

DOM assume che il documento sia un albero. L'interfaccia Node è la " ... tipo di dati primario per l'intero [DOM]. Rappresenta un singolo nodo nella struttura del documento . " Node ha diverse proprietà per l'accesso ai nodi figlio, fratello e genitore (ad esempio parentNode , frstChild , ecc.) che implica una struttura ad albero. Potresti usare un albero piatto o un albero lineare (ad es. Un elenco collegato), ma sarà comunque una forma di albero.

Come sottolinea George Mauer nei commenti, forse intendi che il modello sottostante di una particolare implementazione non ha bisogno di essere un albero. Questo è vero; Finché l'implementazione fornisce la funzionalità promessa nelle specifiche DOM, puoi utilizzare qualsiasi struttura desideri per fornire tale funzionalità.

Are the objects and methods within the DOM parsing engine in their own native language?

Generalmente . Nella maggior parte dei browser, il DOM viene implementato in un linguaggio di livello inferiore come C, e il browser fornisce i collegamenti all'ambiente JavaScript che può manipolare le rappresentazioni effettive. Infatti, se guardi la domanda Significato di "Spostamento di DOM in Javascript"? , vedrai che Google è interessato a passare a un'implementazione nativa di JavaScript JavaScript (probabilmente per evitare di dover utilizzare sia una funzione C ++ che un duplicato Wrapper JavaScript per quella funzione C ++, probabilmente anche per guadagni in termini di prestazioni).

what is responsible for translating from JavaScript to the native language?

Sono un po 'confuso su questo argomento, ma la mia comprensione è che quando viene invocato un binding DOM JavaScript, l'ambiente di esecuzione JavaScript (che è esso stesso implementato in un linguaggio di livello inferiore come C) effettua una chiamata al funzione DOM pertinente (scritta in C / C ++) per manipolare il DOM.

Se vuoi approfondire, devi parlare con qualcuno che effettivamente crea i browser.

does that mean that when you create language bindings by following the IDL, you are just creating objects in the specific language, i.e C++ that your DOM parsing engine is built with?

Sì. L'IDL del DOM è indipendente dalla lingua, quindi puoi implementarlo in qualsiasi lingua. "Scrivere un'implementazione DOM" significa scrivere codice (in un particolare linguaggio) per conformarsi alle interfacce IDL descritte nelle specifiche DOM.

    
risposta data 03.06.2013 - 17:00
fonte

Leggi altre domande sui tag