我从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