我正在使用 JSNI 从 gwt 客户端调用 javascript 函数,如下所示:
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 函数包含 window.open("ServletName?....")。单击锚点时,打开的窗口显示以下错误: 请求的资源 (/es/ gwt/core /ServletName) 不可用。
如果我将 window.open("ServletName?....") 替换为 window.open("../../ServletName?...."),则窗口打开成功,但这些 javascript 函数也在外部使用gwt 所以我不能修改它。
我不知道为什么将 /gwt/core 部分添加到导致问题的 url 中。在执行 javascript 函数之前,gwt 中是否有办法提取其内容并在 url 之前添加“../..”?我的意思是提升 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 客户端修改它并用新的修改调用它。
如果有人可以帮助我,我将不胜感激。