微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Chrome 的 ASP.Net 弹出窗口

如何解决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 中没有看到被阻止的弹出窗口,我什至进入了设置并执行了以下操作:

  • 将安全浏览设置为“无保护”
  • 在服务器名称(http://servername 和 http://localhost)上设置允许弹出窗口和重定向

解决方法

如前所述,几乎所有浏览器都对弹出窗口进行了限制。这让网络开发者的工作变得更加困难。

有两种好方法。我根本不喜欢使用引导程序对话框,但他们倾向于根据 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 库。

弹出页面确实使整个页面变灰,并且您确实获得了一个标题栏,以及您自己的“确定”、“取消”按钮。因此,上面看起来像这样:

enter image description here

所以,它做得很好 - 但如前所述,该页面只能有一个回传,并且它不能是一个具有大量按钮和回传的通用 aspx 页面 - 但它会呈现和显示还不错。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。