我有 gwt java 代码程序,它打开一个带有 url 的窗口。
Map<String, Object> ids = new HashMap<String, Object>();
ids.put("employeeId", UserToken.getCurrentUserToken().getEmployeeId());
createCaseUrl = ICMIntakeConstants.buildGrailsUrl(ICMIntakeConstants.CLIENT_APPLICATION_CONTROLLER, "", ids);
ICMWindow.open(createCaseUrl, "intake", "height=600,width=800,scrollbars=yes,resizable=yes,toolbar=no,directories=no,status=no,menubar=no", true);
由于某种原因,它被调用了两次的代码问题(但 IE 和 chrome 处理它,但不是 firefox),这就是为什么窗口只在 Firefox 中弹出两次。我需要知道如何防止这种情况。我试图修改窗口的 JSNI 代码,但我的背景为零,当我进行研究时,不会出现一个简单的警报,所以我无法真正调试/查看发生了什么。
/**
* Defines all variable in JavaScript accessible by Java code and opens a new browser window
* with the specified url, name and features.
*/
public static native void open(String url, String name, String features, boolean force)
/*-{
$wnd.alert("test2");
var winRef;
try {
if (force)
{
winRef = $wnd.open(url,name, features);
$wnd.alert("test1 force");
Alert.alert("clicked!");
}
else
{
$wnd.alert("test2");
winRef = $wnd.open("",name, features);
if(winRef.location == 'about:blank')
{
winRef.location=url
}
else
{
if(!/Chrome[\/\s]/.test(navigator.userAgent))
{
winRef.alert("Please click Ok To Continue....");
}
}
}
// Set focus to the opened window
winRef.focus();
} catch (err) {
}
}-*/;
我尝试通过 JUNIT 测试调用 open() 方法,但没有...
谁能告诉我如何使警报弹出,因为即使我删除了整个代码并离开了 $wnd.alert("test2"); ,上面的代码也不起作用?以及如何检查 JSNI 中是否存在 winref 那么我不会打开窗口?请帮忙。
或者有没有办法可以在打开的窗口中插入类似 javascript 代码?解决此问题的最佳方法是什么?谢谢