1

大規模な GWT プロジェクトと多くの小さな GWT サブプロジェクトがあります。基本的に、大規模なコントローラー プロジェクトは、ページに表示される iframe に組み込まれるものや、URL をクリックしてプロジェクトを開くことで表示されるものなど、さまざまな方法で小さなプロジェクトを呼び出します。新しいウィンドウ。

要件は、その場で Css を変更することです。これは、スタイルシート URL を含むリンク タグの href をその場で変更するだけで、メイン プロジェクトで可能です。

この変更をサブプロジェクトにも反映させることはできますか? または、より広い意味で、GWT でプロジェクト間通信を実現するにはどうすればよいですか?

4

2 に答える 2

2

異なる GWT アプリケーションのドメインが同じである場合、ブラウズにより、IFrame 全体で Javascript コードを呼び出すことができます。

JSNI を使用すると、GWT アプリケーションにコールバックするウィンドウ オブジェクトにメソッドを登録でき、JSNI を使用すると、他のプロジェクトがこのメソッドを呼び出すことができます。

于 2009-09-09T11:14:24.913 に答える
1

すべてのアプリが同じドメインから提供されている場合、スタイルシートの名前を Cookie に保存できます。次に、各アプリは Cookie を使用して適切なスタイルシートを選択します。

String theme = Cookies.getCookie("THEME");
if (theme == null) {
    theme = "default";
}

Element e = DOM.createElement("link");
DOM.setElementProperty(e, "rel", "stylesheet");
DOM.setElementProperty(e, "href", GWT.getModuleBaseURL() + currentTheme + 
    ".css");
DOM.appendChild(getHead(), e);

private native Element getHead() /*-{
    return $doc.getElementsByTagName('head')[0];
}-*/;
于 2009-09-09T12:15:47.817 に答える