如何解决Chrome 的 ASP.Net 弹出窗口
我似乎无法让 Chrome 弹出“警报”页面。警报页面中包含代码,因此它不能真正成为 DIV,否则我会这样做。它工作了很多年,但很可能对 Chrome 更新它不再起作用。不过在 IE11 中仍然可以正常工作。
以下代码用于在有从数据库查询的警报时弹出“警报”页面。它一直有效直到最近(15 年和运行)
代码:
ClientScript.RegisterStartupScript(GetType(Page),"Alarm","<script language='javascript'>window.showModalDialog('Alarm.aspx?ID=" & AlarmID & "',null,'dialogWidth=460px;dialogHeight=310px;status=no;resizable=yes');document.frmA.submit();</script>")
我尝试了一些方法,例如 windows.open 并在 asp.net 页面上创建一个隐藏按钮,然后使用单击事件。什么都行不通。我在 Chrome 中没有看到被阻止的弹出窗口,我什至进入了设置并执行了以下操作:
解决方法
如前所述,几乎所有浏览器都对弹出窗口进行了限制。这让网络开发者的工作变得更加困难。
有两种好方法。我根本不喜欢使用引导程序对话框,但他们倾向于根据 div 等的类设置“自行完成工作”类型的交易 - 真的很难调试。
由于现在几乎所有站点都包含用于 js 代码的 jQuery,因此我非常建议您引入 jquery.UI。它有很多不错的东西,比如日期选择器等。但它也有一个相当不错的对话框弹出选项。他们只是工作,当你编码它们时?他们遵循“正常”之类的代码方法。
不太清楚您的消息/对话框是否在单击按钮(并回发)后弹出,并且在该过程结束时,您需要/想要显示一些对话框消息。但总而言之,对于您需要的对话框/消息,我强烈推荐 jQuery.UI。
jQuery.UI 在大多数情况下期望您想要“显示/弹出”的内容存在于当前现有页面的一个简单 div 中。但是,如果您提供另一个现有网页的对话框,它也能很好地工作。唯一要记住的真正的大问题?您弹出的那个对话框页面无法处理多个回发。 (因此,该对话框中的某些按钮或 ONE 回发很好 - 但您只能获得 ONE 回发。 因此,如果该页面显示允许一些输入或一些交互,并且只需要一次回发,那么 jQuery.UI 又是很棒的。如果该弹出页面需要多个按钮和多个回发,那么您将陷入痛苦和伤害的世界 - jQuery.UI 对话框(与大多数一样)无法生存或处理多个回发。任何回发都意味着对话框关闭(折叠)。因此,在这些情况下,如果您需要/拥有/希望该页面具有多个活动的回发按钮或事件,则必须采用 ajax 调用(网络方法)。
因此,您甚至可以在您的母版页中拥有/放置一个脚本,以及您的注册脚本可以调用的少量函数代码存根。
或者,我想你可以注入整个脚本,但脚本看起来像这样:
所以,pop 页面实际上被推到了一个 div 中。所以我们有一个“持有”页面的 div。
jQuery.UI 代码脚本如下所示:
<div id="poppagearea">
</div>
<script>
function showpage() {
var mydiv = $('#poppagearea');
mydiv.dialog({
autoOpen: false,modal: true,title: 'My cool other page',width: '30%',position: { my: 'top',at: 'top+150' },buttons: {
'ok': function () {
mydiv.dialog('close');
alert('user click ok');
},'cancel': function () {
mydiv.dialog('close');
alert('user click cancel');
}
}
});
mydiv.load('Default.aspx');
// Open the dialog
mydiv.dialog('open');
}
因此,在上面,我们将“default.aspx”加载到该对话框中,从而将其显示在页面上。
所以,我会考虑 jQuery.UI - 但这确实意味着在您现有的项目中采用一个新的 js 库。
弹出页面确实使整个页面变灰,并且您确实获得了一个标题栏,以及您自己的“确定”、“取消”按钮。因此,上面看起来像这样:
所以,它做得很好 - 但如前所述,该页面只能有一个回传,并且它不能是一个具有大量按钮和回传的通用 aspx 页面 - 但它会呈现和显示还不错。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。