URLでウィンドウを開くgwt Javaコードプログラムがあります。
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);
なんらかの理由で 2 回呼び出されるコードの問題 (ただし、IE と chrome では処理されますが、Firefox では処理されません)。そのため、Firefox でのみウィンドウが 2 回ポップアップします。これを防ぐ方法を知る必要があります。ウィンドウの 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 コードのようなものを挿入する方法はありますか? これを解決する最善の方法は何ですか? ありがとう