0

私は奇妙な状況に直面しています: GWT を添付する HTML を顧客が提供してくれました。UI バインディングの使用は許可されていないため、ページをそのままロードし、ID で要素を取得し、必要なものを変更する必要があります。

これらのページにはサードパーティの JavaScript が含まれていますが、ページの最初の読み込み時に、メソッドが見つからないという例外が発生することがよくあります。ページをリロードすると、エラーはなくなり、ページは正常に動作します。ページがロードされたときに、これらの JS がまだ利用できないと思われるため、エラーが発生します。xxx.nocache.js をロードする前に、外部ライブラリの準備が整っていることを確認する方法はありますか?

もう 1 つの奇妙な問題: ページに GWT を追加すると、すべてのリスナー (ボタンの onClick など) がなくなり、それらを再接続する必要があります。

元のページ (GWT なし) を開くと、すべて正常に動作します。

助言がありますか?

4

1 に答える 1

0

HTML ドキュメント内のスクリプトのロード プロセスは順次実行されますが、ロードされたすべてのスクリプトがこの順序で初期化されることを保証するものではありません。これは、適切な順列をロードするときに GWT ブートストラップが行うように、多くのスクリプトが非同期で実行できるためです。

つまり、必要なものがすべてロードされるまで待機するように、GWT でコードを記述する必要があります。タイマーまたはスケジューラを使用します。

  Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {

    native boolean check() /*-{
      // return true when all 3party js properties are available
      return !! $wnd.some_library_property
    }-*/;

    public boolean execute() {
      if (check()) {
        // Call your real entrypoint code here
        return false;
      } else {
        return true;
      }
    }
  }, 100);

2 番目の質問に関連して、いくつかの要素を gwt ウィジェットでラップすると、ウィジェットによっては以前に添付されたイベントが失われることがあります。これらの要素をどのようにラップしているかについてのコードを投稿できますか。

于 2013-11-12T15:15:03.460 に答える