私はGWTアプリケーション内のネイティブ関数で作業しており、この2つのメソッドを試しました。document.getElementById( "id")はnullを返しますが、$ doc.getElementById()は有効な要素を返します。この方法の(概念的に)違いはどれですか?前もって感謝します。
2 に答える
GWT アプリのコードは (非表示の) iframe で実行されるため、document
その iframe のドキュメント (およびwindow
iframe の閲覧コンテキスト) を参照します。したがって、GWT は変数を初期化し$doc
、GWT アプリをロードする「ホスト ページ」$wnd
のドキュメントとブラウジング コンテキスト ( window ) を簡単に参照できるようにします。
リンカーは、コンパイルされたコードのロード方法を決定することに注意してください。デフォルトのもの ( std
) と新しいxsiframe
ものは iframe を使用しますが、非推奨xs
のものは同じブラウジング コンテキストでコードをロードします (そう$doc == document
と$wnd == window
) 。
GWT JSNI ページから:
このコードは、JavaScript ウィンドウ オブジェクトをメソッド内で直接参照していないことに注意してください。JSNI からブラウザのウィンドウ オブジェクトとドキュメント オブジェクトにアクセスする場合は、それぞれ $wnd と $doc として参照する必要があります。コンパイルされたスクリプトはネストされたフレームで実行され、ホスト ページのウィンドウとドキュメントを正しく参照するために $wnd と $doc が自動的に初期化されます。