2011-09-05 5 views
7

Sto lavorando a una funzione nativa all'interno di un'applicazione GWT e ho provato questi due metodi: documento .getElementById ("id") restituisce null ma $ doc.getElementById() restituisce un elemento valido. Qual è la differenza (concettualmente) tra questi metodi? Grazie in anticipo.

risposta

7

Il codice di tue corse app GWT in un (nascosto) iframe, in modo document riferimenti che il documento di IFRAME (e window contesto navigazione del iframe). GWT inizializza quindi le variabili $doc e $wnd per consentire di fare facilmente riferimento al documento e al contesto di navigazione (finestra) della "pagina host" che carica l'app GWT.

Si noti che i linker decidere come viene caricato il codice compilato, quello di default (std) e le più recenti xsiframe uso iframe, mentre le deprecate xs carichi il codice nello stesso contesto di navigazione (in modo $doc == document e $wnd == window)

2

Da GWT JSNI page:

Si noti che il codice non ha fatto riferimento all'oggetto della finestra JavaScript direttamente all'interno del metodo. Quando si accede alla finestra del browser e agli oggetti del documento da JSNI, è necessario fare riferimento come $ wnd e $ doc, rispettivamente. Lo script compilato viene eseguito in una cornice nidificata e $ wnd e $ doc vengono inizializzati automaticamente per fare riferimento correttamente alla finestra e al documento della pagina host.