7

私はGWTアプリケーション内のネイティブ関数で作業しており、この2つのメソッドを試しました。document.getElementById( "id")はnullを返しますが、$ doc.getElementById()は有効な要素を返します。この方法の(概念的に)違いはどれですか?前もって感謝します。

4

2 に答える 2

7

GWT アプリのコードは (非表示の) iframe で実行されるため、documentその iframe のドキュメント (およびwindowiframe の閲覧コンテキスト) を参照します。したがって、GWT は変数を初期化し$doc、GWT アプリをロードする「ホスト ページ」$wndのドキュメントとブラウジング コンテキスト ( window ) を簡単に参照できるようにします。

リンカーは、コンパイルされたコードのロード方法を決定することに注意してください。デフォルトのもの ( std) と新しいxsiframeものは iframe を使用しますが、非推奨xsのものは同じブラウジング コンテキストでコードをロードします (そう$doc == document$wnd == window) 。

于 2011-09-05T14:31:37.190 に答える
2

GWT JSNI ページから:

このコードは、JavaScript ウィンドウ オブジェクトをメソッド内で直接参照していないことに注意してください。JSNI からブラウザのウィンドウ オブジェクトとドキュメント オブジェクトにアクセスする場合は、それぞれ $wnd と $doc として参照する必要があります。コンパイルされたスクリプトはネストされたフレームで実行され、ホスト ページのウィンドウとドキュメントを正しく参照するために $wnd と $doc が自動的に初期化されます。

于 2011-09-05T14:33:07.980 に答える