我的 web 应用程序在新版本(37 及更高版本)启动后崩溃Chrome
,因为 chrome 已经停止支持。showmodaldialog
但是我需要在我的 web 应用程序中实现相同的功能。
我需要一些return value
与弹出窗口相同的showmodaldialog
内容。我分别设计了所有弹出窗口页面并从父页面调用它们。
我的 web 应用程序在新版本(37 及更高版本)启动后崩溃Chrome
,因为 chrome 已经停止支持。showmodaldialog
但是我需要在我的 web 应用程序中实现相同的功能。
我需要一些return value
与弹出窗口相同的showmodaldialog
内容。我分别设计了所有弹出窗口页面并从父页面调用它们。
Chrome 开始支持 <dialog> 元素。看一下这个。http://demo.agektmr.com/dialog/
Polyfill 也可用。 https://github.com/GoogleChrome/dialog-polyfill
在做了很多谷歌搜索之后,我找到了该问题的解决方案。我Jquery dialog
在版本中使用存在jquery-1.9.1
。下面给出的实现:
在父页面的标签上添加jquery
库head
<link type="text/css" rel="stylesheet" href="https://code.jquery.com/ui/1.10.1/themes/base/jquery-ui.css" />
<script type="text/javascript" src="https://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript" src="https://code.jquery.com/ui/1.10.1/jquery-ui.js"></script>
编写弹出窗口打开功能,我在其中创建一个div
和内部这样的div
拍摄iframe
<script type="text/javascript" language="javascript">
function Open() {
var href = "../../PopUps/FindEmployee.aspx?Page=EC";
var obj = $('<div id="divClose"></div>');
obj.html('<iframe id="popUpFrame" style="border: 0px; " src="' + href + '" width="100%" height="99%"></iframe>');
obj.dialog({
autoOpen: false,
resizable: false,
height: 500,
width: 650,
modal: true,
title: "Find Employee",
dialogClass: 'infoDialogHeader infoDialogTitle'
});
obj.dialog('open');
return false;
}
function closeIframe() {
$('#divClose').dialog('destroy');
}
</script>
现在我正在处理FindEmployee.aspx
像这样的子页面:
<script type="text/javascript" language="javascript">
$(document).ready(function () {
$("[id^=BtnReturnParentPage]").click(function (e) {
var movedElement;
if ($("#hdnInformationType").val() == "EC") { // condition for Employee Code
movedElement = window.parent.$("[id*='txtECode']");
// cleaning textbox
movedElement.val('');
movedElement.val($(this).parent().parent().find("[id^=gvEmployeeDetails_gvlblEmployeeCode]").text()); // assing relating information
}
window.parent.closeIframe();
});
</script>
在上面的子页面代码中,我获取$("[id*='txtECode']")
textbox
了父页面上存在的值,并将子页面员工代码值分配给父页面textbox
。
所以我们需要在父页面上创建一个textbox
名称为的元素,txtECode
以便分配子页面的值。
希望对所有正在苦苦挣扎的人有所帮助window.showmodeldialog
一个更简单的解决方案是:您可以在window.opener.client_function旁边使用window.open而不是window.showmodaldialog。
在 Peter A. Bromberg 的这篇文章中,很好地解释了:ASP.NET Popup Windows With Return Values Redux
“更少的代码,相同的操作”