我從GWT的客戶端使用JSNI像後續調用javascript函數:GWT:如何提取使用JavaScript函數的內容(JSNI)
anchor.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
execute(notification.getActionCode(), notification.getParams());
}
});
private static native String execute(String functionName, String params)/*-{
try{
$wnd[functionName](params);
}catch(e){
alert(e.message);
}
}-*/;
我的問題是我的javascript函數包含窗口。開放( 「ServletName?......」)。 單擊錨點時,窗口打開時出現以下錯誤: 請求的資源(/ es/gwt/core/ServletName)不可用。
如果我通過window.open(「../../ ServletName?....」)替換window.open(「ServletName?....」),窗口打開成功,但是這些javascript函數也用在gwt之外,所以我不能修改它。
我不知道爲什麼part/gwt/core被添加到導致問題的url。 在執行javascript函數之前,在gwt中有沒有一種方法來提取它的內容並在url之前添加「../ ..」? 我的意思是heaving的JavaScript函數的名稱,我們可以得到它的內容之前調用執行功能?在我的情況,我的javascript函數是如下:
function everlinked_AddSpace(spaceId){
window.open('ELUtilities?Service=Space&action=homePage&SpaceId='+spaceId+'&Template=apps/everlinked/templates/spaces/space_main.htm','_blank');;
}
我需要修改它在GWT客戶端和新修改調用它。
我很感謝有人能幫助我。
我已更新我的帖子。我希望它更清楚。我不知道這是否是正確的解決方案。如果您有任何更好的解決方案,我將不勝感激。 – user2318955 2013-04-25 10:09:54
http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/com/google/gwt/core/client/GWT.html#getHostPageBaseURL() – 2013-04-25 10:16:18
謝謝Baadshah的幫助。但我應該在哪裏使用方法getHostPageBaseURL() – user2318955 2013-04-25 10:52:27