我们有一个大型 GWT 项目和许多较小的 GWT 子项目,基本上大型控制器项目通过多种方式调用较小的项目,例如一些被合并到页面中显示的 iframe 中,一些通过单击 URL 并将项目打开到一个新的窗口。
要求是动态更改 Css,这在主项目中是可能的,只需动态更改包含样式表 url 的链接标记的 href
是否也可以将这种更改推广到子项目?或者更广泛地问,我如何在 GWT 中实现项目间通信?
我们有一个大型 GWT 项目和许多较小的 GWT 子项目,基本上大型控制器项目通过多种方式调用较小的项目,例如一些被合并到页面中显示的 iframe 中,一些通过单击 URL 并将项目打开到一个新的窗口。
要求是动态更改 Css,这在主项目中是可能的,只需动态更改包含样式表 url 的链接标记的 href
是否也可以将这种更改推广到子项目?或者更广泛地问,我如何在 GWT 中实现项目间通信?
如果不同 GWT 应用程序的域相同,则浏览允许您跨 IFrame 调用 Javascript 代码。
使用 JSNI,您可以在窗口对象上注册方法,这些方法回调到 GWT 应用程序中,并且使用 JSNI,其他项目可以调用此方法。
如果所有应用程序都来自同一个域,您可以将样式表的名称存储在 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];
}-*/;