2013-10-19 12 views
6

私は、次のことを知ってはGWTで同じのいくつかの種類でありますJSNI(JavaScript)で?

答えて

11

Windowは静的メソッドのクラスで、ブラウザウィンドウの特定のプロパティを取得または設定するために使用できますが、実際はネイティブブラウザウィンドウオブジェクトではありません。これらのメソッドの実装は、最終的に$wnd変数を使用してこれらのプロパティを設定/取得するブロックJSNIです。 Window.alert()のように、その実装は$wnd.alert()になります。 Window.javawindow.consoleなど

GWTのように、ブラウザのウィンドウオブジェクト内のすべてのアクセスを持っていないことに注意してくださいコンパイルされたコードは、iframe内に正常に実行されるため$wnd代わりwindowを使用しており、この文脈では、windowは、iframeのウィンドウを参照します$wndは親ウィンドウを参照します。親文書のiframe内の参照である$docで同じことが起こります。反対側Document

JavaScriptObjectを拡張するJavaクラスである、それは基本的にはネイティブjavascriptオブジェクトのための特別なラッパーであることを意味Overlayタイプで、それは根本的なJavaScriptを変更しないことを意味しますが追加されますそれと対話するJavaメソッドのセットjsniに渡すときは安全にキャストできます。要約すると

Document$docがそうでなければWindowそれは$wndのオーバーレイではありません、それがコンパイルされたとき、彼らは同じになり、Javaの世界では同じではありませんが、それはブラウザの特定のメソッドにアクセスするだけの方法です窓。

GWTコンパイル済みコードはネイティブjsオブジェクトとメソッドに委譲しますが、jsとjavaオブジェクトの間に類似点は見つけようとしないでください。 GWTは、一連のJavaオブジェクト、ウィジェット、パターンなどを使用してajaxアプリケーションを開発するためのAPIを設計しました。いくつかのオブジェクトとメソッドの名前は同じですが、ほとんどのAPIは異なります。しかし、Javaをto javascriptにコンパイルする他のプロジェクトでは、ST-JSのような2つの世界の間に厳密な並列性があり、GWTはElementalという実験的なライブラリを提供しています(APIはjavascriptとほとんど同じです)。