子ウィンドウから親ウィンドウに文字列を返そうとしているASP.NET 3.5 Webアプリケーションがあります。 FF、Chrome、Safariで動作しますが、IEは別の話です。 IEでは、初めて動作しますが、子を再度開き、別の文字列を渡すと、親ページはPostBackの途中でハングします。親ウィンドウのASCXについてはIEが2回目にハングアップするJavaScriptを使用して親ウィンドウに値が渡される
、私は次のようしている:
<script type="text/javascript">
function openMediaManager() {
// This is called to open the child window.
window.open('/mediamanager.aspx', 'mediamanager', 'width=685, height=530');
}
function setImagePath(img) {
// This is called by the child window to pass the string to the parent.
<asp:Literal ID="NewImgPostBack" runat="server" />
}
</script>
と__doPostBack()の呼び出しを生成するための背後にあるコードからの抜粋:子ASCXで
protected override void Render(HtmlTextWriter writer)
{
// Not using the Button's OnClick because I have to use FindControl() to get the button.
string postBack = Page.ClientScript
.GetPostBackEventReference(MediaManagerButton, string.Empty)
.Replace("''", "{0}");
NewImgPostBack.Text = string.Format(postBack, "img");
base.Render(writer);
}
を、私はファイルへのパスを含む次の関数を呼び出しています(例: "/image.png"):
<script type="text/javascript">
function sendValueToParent(path) {
// Called by the child to pass a string (path to an image) to the parent.
window.opener.setImagePath(path);
window.close();
}
</script>
任意これはなぜIEでのみハングアップするアイデアですか?私はIE 7を使用していますが、私はIE 6でも同じ問題を読んでいます(ほとんどのエンドユーザーがそうします)。
同様の問題への参照: Why does Internet Explorer 7 hang bizarrely when child window scripts the parent window to submit?
EDIT
ページをIEでハングしているようですしながら、私は(子供が既に閉じられている)親のソースを表示した場合、私は以下を参照してください。 :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>title
</title><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link id="ctl00_SiteStyle" rel="stylesheet" type="text/css" href="/App_Themes/20/css/a.css?v=3.0.0.1" />
<script type="text/javascript" src="/javascript/_common.js"></script>
<script type="text/javascript" src="/javascript/_calendar.js"></script>
</head>
<body>
<form name="aspnetForm" method="post" action="/home.aspx" id="aspnetForm">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJMTY1ODQ0NjQxD2QWAmYPZBYEAgEPZBYCAgMPFgIeBGhyZWYFJy9BcHBfVGhlbWVzL1NCMjAvY3NzL2FtbGkuY3NzP3Y9My4wLjAuMWQCAw9kFgoCAQ9kFgYCAQ8PFgQeBFRleHQFCURFViBMb2dpbh4HVmlzaWJsZWhkZAIDDw8WBh8BBQhIVFRQIEdFVB4LTmF2aWdhdGVVcmwFCi9ob21lLmFzcHgfAmdkZAIFDw8WBB8BBQZMb2cgSW4fAmhkZAIFD2QWBAIDD2QWAgIBD2QWCGYPDxYCHwJnZBYEZg8PFgYeCEltYWdlVXJsBR8vaW1hZ2VzL2Ntc2ljb25zL2VkaXRfc21hbGwucG5nHghDc3NDbGFzcwURQ01TRWRpdE1lbnVfSW1hZ2UeBF8hU0ICAhYCHgtvbm1vdXNlb3ZlcgUzZGlzcGxheU1lbnUoJ2N0bDAwX0NvbnRlbnRNYWluX2N0bDAxX2N0bDAwX2N0bDAxJyk7ZAIBDw8WBB8FBRRDTVNFZGl0TWVudV9NYWluTWVudR8GAgIWBB8HBRVkaXNwbGF5TWVudSh0aGlzLmlkKTseCm9ubW91c2VvdXQFEmhpZGVNZW51KHRoaXMuaWQpOxYOZg8PFgQfBQUaQ01TRWRpdE1lbnVfTWVudUl0ZW1CdXR0b24fBgICFgQfBwUXdGhpcy5vZmZzZXRQYXJlbnQubW89MTsfCAUXdGhpcy5vZmZzZXRQYXJlbnQubW89MDsWAmYPDxYEHwUFGUNNU0VkaXRNZW51X01lbnVJdGVtUGFuZWwfBgICFgQfBwUadGhpcy5jbGFzc05hbWU9J01JUEhvdmVyJzsfCAUSdGhpcy5jbGFzc05hbWU9Jyc7FgRmDw8WBh8EBSMvaW1hZ2VzL2Ntc2ljb25zL2VkaXRtb2RlX3NtYWxsLnBuZx8FBRlDTVNFZGl0TWVudV9NZW51SXRlbUltYWdlHwYCAmRkAgEPDxYGHwEFBEVkaXQfBQUYQ01TRWRpdE1lbnVfTWVudUl0ZW1UZXh0HwYCAmRkAgEPDxYEHwUFGkNNU0VkaXRNZW51X01lbnVJdGVtQnV0dG9uHwYCAhYEHwcFF3RoaXMub2Zmc2V0UGFyZW50Lm1vPTE7HwgFF3RoaXMub2Zmc2V0UGFyZW50Lm1vPTA7FgJmDw8WBB8FBRlDTVNFZGl0TWVudV9NZW51SXRlbVBhbmVsHwYCAhYEHwcFGnRoaXMuY2xhc3NOYW1lPSdNSVBIb3Zlcic7HwgFEnRoaXMuY2xhc3NOYW1lPScnOxYEZg8PFgYfBAUmL2ltYWdlcy9jbXNpY29ucy9kaXNwbGF5bW9kZV9zbWFsbC5wbmcfBQUZQ01TRWRpdE1lbnVfTWVudUl0ZW1JbWFnZR8GAgJkZAIBDw8WBh8BBQdEaXNwbGF5HwUFGENNU0VkaXRNZW51X01lbnVJdGVtVGV4dB8GAgJkZAIDDw8WBB8FBRpDTVNFZGl0TWVudV9NZW51SXRlbUJ1dHRvbh8GAgIWBB8HBRd0aGlzLm9mZnNldFBhcmVudC5tbz0xOx8IBRd0aGlzLm9mZnNldFBhcmVudC5tbz0wOxYCZg8PFgQfBQUZQ01TRWRpdE1lbnVfTWVudUl0ZW1QYW5lbB8GAgIWBB8HBRp0aGlzLmNsYXNzTmFtZT0nTUlQSG92ZXInOx8IBRJ0aGlzLmNsYXNzTmFtZT0nJzsWBGYPDxYGHwQFHy9pbWFnZXMvY21zaWNvbnMvdW5kb19zbWFsbC5wbmcfBQUZQ01TRWRpdE1lbnVfTWVudUl0ZW1JbWFnZR8GAgJkZAIBDw8WBh8BBQRVbmRvHwUFGENNU0VkaXRNZW51X01lbnVJdGVtVGV4dB8GAgJkZAIFDw8WBB8FBRpDTVNFZGl0TWVudV9NZW51SXRlbUJ1dHRvbh8GAgIWBB8HBRd0aGlzLm9mZnNldFBhcmVudC5tbz0xOx8IBRd0aGlzLm9mZnNldFBhcmVudC5tbz0wOxYCZg8PFgQfBQUZQ01TRWRpdE1lbnVfTWVudUl0ZW1QYW5lbB8GAgIWBB8HBRp0aGlzLmNsYXNzTmFtZT0nTUlQSG92ZXInOx8IBRJ0aGlzLmNsYXNzTmFtZT0nJzsWBGYPDxYGHwQFIS9pbWFnZXMvY21zaWNvbnMvcmVtb3ZlX3NtYWxsLnBuZx8FBRlDTVNFZGl0TWVudV9NZW51SXRlbUltYWdlHwYCAmRkAgEPDxYGHwEFBlJlbW92ZR8FBRhDTVNFZGl0TWVudV9NZW51SXRlbVRleHQfBgICZGQCBg8PFgQfBQUaQ01TRWRpdE1lbnVfTWVudUl0ZW1CdXR0b24fBgICFgQfBwUXdGhpcy5vZmZzZXRQYXJlbnQubW89MTsfCAUXdGhpcy5vZmZzZXRQYXJlbnQubW89MDsWAmYPDxYEHwUFGUNNU0VkaXRNZW51X01lbnVJdGVtUGFuZWwfBgICFgQfBwUadGhpcy5jbGFzc05hbWU9J01JUEhvdmVyJzsfCAUSdGhpcy5jbGFzc05hbWU9Jyc7FgRmDw8WBh8EBSEvaW1hZ2VzL2Ntc2ljb25zL2luc2VydF9zbWFsbC5wbmcfBQUZQ01TRWRpdE1lbnVfTWVudUl0ZW1JbWFnZR8GAgJkZAIBDw8WBh8BBQZJbnNlcnQfBQUYQ01TRWRpdE1lbnVfTWVudUl0ZW1UZXh0HwYCAmRkAggPDxYEHwUFGkNNU0VkaXRNZW51X01lbnVJdGVtQnV0dG9uHwYCAhYEHwcFF3RoaXMub2Zmc2V0UGFyZW50Lm1vPTE7HwgFF3RoaXMub2Zmc2V0UGFyZW50Lm1vPTA7FgJmDw8WBB8FBRlDTVNFZGl0TWVudV9NZW51SXRlbVBhbmVsHwYCAhYEHwcFGnRoaXMuY2xhc3NOYW1lPSdNSVBIb3Zlcic7HwgFEnRoaXMuY2xhc3NOYW1lPScnOxYEZg8PFgYfBAUfL2ltYWdlcy9jbXNpY29ucy9z
(終了)
は、あなたと思いますかこれはViewStateの問題かもしれませんか? IEのウィンドウを開いたままにすると、約5分後にタイムアウトしてスタイリングのないページが読み込まれることがあります。
良い考えですが、同じ結果です。 – Aaron
あなたは正確にそれがハングするか知っていますか? close()の前に警告を追加してみてください。それともsetImagePath()にイベントが届かないのですか? – Niko
setImagePath()に到達していて、close()もヒットしています。それはサーバー側でハングアップするようだ...?私はハングアップについていくつかの詳細を与えるために質問を編集しました。 – Aaron