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 回答