我們有大量GWT項目和許多較小GWT子項目 基本上大控制器項目調用經由許多裝置,如一些被併入到iframe了在頁面中示出的小項目 , 有些是通過點擊一個URL並將該項目打開到一個新窗口顯示。GWT間項目通信
的要求是動態更改的CSS,這是可能的主要項目, 通過簡單地改變,在飛行中,包含樣式表URL
link標籤的href是有可能傳播完成這個子項目的變化呢? 或以更廣泛的方式提問, 我如何在GWT中實現項目間的溝通?
我們有大量GWT項目和許多較小GWT子項目 基本上大控制器項目調用經由許多裝置,如一些被併入到iframe了在頁面中示出的小項目 , 有些是通過點擊一個URL並將該項目打開到一個新窗口顯示。GWT間項目通信
的要求是動態更改的CSS,這是可能的主要項目, 通過簡單地改變,在飛行中,包含樣式表URL
link標籤的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];
}-*/;
嗨,我覺得你誤解了這個問題,Cookies是一種很好的方式來存儲一些常見的東西,但是我的問題在這裏調用,父母應該調用/通知孩子將其Css改爲別的東西。 還是不錯的建議吧,+1 – 2009-09-09 12:27:41
嘿jsni的方法是在一個senario,不同的窗口失敗。我有一個登錄模塊,成功將頁面url更改爲另一個gwt模塊。在這種情況下,javascript全局變量值會丟失[有意義,因爲窗口本身已經改變,然後window.variable不再在範圍內],在這種情況下應該怎麼做?使用cookie? – 2009-12-29 06:50:39
主框架可以偵聽重新加載事件並重新註冊回調。客戶端可以在加載時提供可用的方法,即主框架可以調用。有很多選擇。 – 2010-01-14 08:59:18