我们有一个大型GWT项目和许多小型GWT子项目 基本上,大型控制器项目调用较小的项目 通过许多手段,例如一些被纳入页面中显示的iframe, 通过单击URL并将项目打开到新窗口来显示一些。
要求是动态改变Css,这在主项目中是可能的, 通过简单地改变包含样式表url的链接标记的href
是否有可能将这一变化传播给子项目? 或者用更广泛的术语提问, 如何实现GWT中的项目间沟通?
答案 0 :(得分:2)
如果不同GWT应用程序的域相同,浏览允许您跨IFrame调用Javascript代码。
使用JSNI,您可以在窗口对象上注册回调到GWT应用程序的方法,并使用JSNI,其他项目可以调用此方法。
答案 1 :(得分: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];
}-*/;