So che quanto segue è una sorta dello stesso in GWT:
Window and $wnd
Document and $doc
ci sono differenze, oltre che il primo viene utilizzato in Java e la seconda in JSNI (JavaScript)?
So che quanto segue è una sorta dello stesso in GWT:
Window and $wnd
Document and $doc
ci sono differenze, oltre che il primo viene utilizzato in Java e la seconda in JSNI (JavaScript)?
Window
è una classe ricca di metodi statici, che è possibile utilizzare per ottenere o impostare determinate proprietà della finestra del browser, ma in realtà non è l'oggetto finestra browser nativo. Queste implementazioni del metodo sono eventualmente blocchi JSNI
che utilizzano la variabile $wnd
per impostare/ottenere tali proprietà. Come Window.alert()
la cui implementazione sarebbe $wnd.alert()
. Si noti che Window.java
non hanno accesso per tutto in oggetto la finestra del browser come window.console
ecc
GWT utilizza $wnd
invece di window
perché il codice compilato viene eseguito normalmente in un iframe, e in questo contesto, window
farà riferimento alla finestra iframe mentre $wnd
farà riferimento alla finestra principale. Lo stesso accade con $doc
che è un riferimento nell'iframe al documento genitore.
Nell'altro lato Document
è una classe Java che estende JavaScriptObject
, significa che si tratta di un tipo Overlay che sostanzialmente significa che è un involucro speciale per un oggetto JavaScript nativo, non modifica il JavaScript sottostante, ma aggiunge un set di metodi java per interagire con esso. Può essere lanciato in modo sicuro quando passa a jsni.
In sintesi, anche se Document
e $doc
non sono gli stessi nel mondo Java, quando viene compilato saranno lo stesso, altrimenti Window
non è una sovrapposizione di $wnd
, è solo un modo per accedere a determinati metodi del browser finestra.
Sebbene GWT abbia compilato i delegati di codice in oggetti e metodi js nativi, non provare a trovare somiglianze tra oggetti js e java. GWT ha progettato un'API per sviluppare applicazioni ajax utilizzando un insieme di oggetti java, widget, pattern, ecc. Alcuni oggetti e metodi sono denominati nello stesso modo, ma quasi l'API è diversa. Tuttavia, altri progetti che compongono java in javascript con un rigido parallelismo tra i due mondi come ST-JS e GWT forniscono una libreria sperimentale chiamata Elemental la cui API è quasi identica a javascript (è disponibile solo per Chrome).