Ответ
Попробуйте дать браузеру немного времени, чтобы выполнить работу (я немного удивлен, что изменился размер):
function ClosePopup(objWindow, strMessage) {
// Close the popup (or whatever)
objWindow.close();
//objWindow.resizeTo(30, 30);
// Schedule our `finish` call to happen *almost* instantly;
// this lets the browser do some UI work and then call us back
setTimeout(finish, 0); // It won't really be 0ms, most browsers will do 10ms or so
// Our `finish` call
function finish() {
if (strMessage != '') { alert(strMessage); }
document.Block.submit();
}
}
Обратите внимание, что форма Block
не будет отправлена до тех пор, пока не будет вызван finish
, поэтому, если ваша логика предполагает синхронность, это может быть проблемой.
Демо
Родительская страница:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Popup Test Page</title>
<style type='text/css'>
body {
font-family: sans-serif;
}
</style>
<script type='text/javascript'>
function ClosePopup(objWindow, strMessage) {
// Close the popup (or whatever)
objWindow.close();
//objWindow.resizeTo(30, 30);
// Schedule our `finish` call to happen *almost* instantly;
// this lets the browser do some UI work and then call us back
setTimeout(finish, 0); // It won't really be 0ms, most browsers will do 10ms or so
// Our `finish` call
function finish() {
if (strMessage != '') { alert(strMessage); }
document.Block.submit();
}
}
</script>
</head>
<body><a href='popup.html' target='_blank'>Click for popup</a>
<form name='Block' action='showparams.jsp' method='POST'>
<input type='text' name='field1' value='Value in field1'>
</form>
</body>
</html>
Всплывающая страница:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Popup</title>
<style type='text/css'>
body {
font-family: sans-serif;
}
</style>
<script type='text/javascript'>
function closeMe() {
window.opener.ClosePopup(window, "Hi there");
}
</script>
</head>
<body>
<input type='button' value='Close' onclick="closeMe();">
</body>
</html>
Я не включил страницу showparams.jsp
, на которую отправляется форма, но все, что он делает, - это отбрасывает отправленные поля. Вышеописанное прекрасно работает в Chrome и IE7, не тестировало его в других, но я не ожидал проблем.