问题标签 [showmodaldialog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2412 浏览

asp.net - ASP.NET 验证未在 JavaScript showModalDialog 调用中执行

我目前使用 JavaScript .showModalDialog 函数从我的父页面打开一个弹出窗口。弹出窗口包含一些 ASP.NET 验证控件,当用户单击 ASP.NET 按钮提交表单时,这些控件不会显示。如果页面上出现错误,则不会显示验证消息,不会在服务器端更新记录并关闭弹出窗口。

(asp.net 验证控件不会阻止弹出窗口执行服务器回发)

以前有没有人经历过这种行为,有什么办法可以防止吗?

这是我的 showModalDialong 调用源代码:

注意: 当弹出模式关闭时,“单击”一个 ASP.NET 按钮以更新父级上的 ASP.NET UpdatePanel,以显示对弹出窗口中修改的记录的更改。

0 投票
2 回答
1910 浏览

asp.net - showModalDialog 会干扰 ClientScript.RegisterStartupScript 吗?

我正在通过“window.showModalDialog(...”显示一个模式对话框,这发生在一个 vbscript 函数中(显示的页面是 aspx)。我想根据 a 中的行数调整窗口大小数据表回来了。所以我很自然地去注册一个根据行数调整窗口大小的启动脚本。好吧,那没有用,所以我尝试注册一个只显示 msgbox 的脚本。

代码看起来像(在 OnLoad 事件处理程序中):

在我看来,这应该可以工作,并在页面加载时显示一个消息框,上面写着“你好”(我已将窗口的 onload 事件设置为 fnWindowOnLoad)。但所发生的一切都没有,没有例外,没有警觉。我已经尝试了 typeof 调用中我能想到的所有类型。似乎没有任何效果。我唯一能想到的是,由于对话框是模态 ClientScript.RegisterStartupScript 将无法正常运行。但这对我来说没有任何意义。

我将 MsgBox “hello” 调用直接放入我的脚本块并显示警报,所以这是可能的。但我需要修改后面代码中的一些参数,所以我必须使用 RegisterStartupScript。

0 投票
2 回答
815 浏览

showmodaldialog - 64 个 ownerdraw createwindow 按钮的限制

我想创建一个包含 256 个彩色按钮的数组,所有者为使用 Visual Studio 对话框设计工具创建的对话框绘制扩展样式。我在对话过程中向 WM_INITDIALOG 消息处理程序添加了一个循环来执行此操作:

我为 WM_CTLCOLORBTN 消息添加了一个消息处理程序。

它或多或少有效,但只显示前 64 个按钮。我打算使用不同的画笔为每个按钮着色,但对于调试用途,我替换了一个定义明确的画笔。我已经调试了代码并对每个按钮的 x/y 坐标和 hMenu createwindow 调用中提供的 ID 是正确的感到满意。我看到所有 256 个按钮都在 WM_CTLCOLORBTN 处理程序中着色。我包括了一项检查以确保 createwindow 调用不返回失败 (NULL)。通过在 createwindow 调用中交换 x/y 参数,我可以获得 4 行 16 个按钮或 4 列 16 个按钮。

如果我从 createwindow 调用中删除 BS_OWNERDRAW 位,则会绘制所有 256 个按钮。

就好像 BS_OWNERDRAW 有 64 个按钮的限制 :-(

任何帮助将不胜感激!

TIA,迈克

0 投票
1 回答
1283 浏览

javascript - window.showModalDialog 打开页面有什么不同?

有谁知道区别?

我遇到的问题是页面在打开时停止正常工作window.showModalDialog

0 投票
4 回答
12020 浏览

javascript - 如何关闭 showModalDialog 打开的对话框?

我试过这个但失败了:

0 投票
1 回答
4866 浏览

javascript - 尝试在模式窗口中打开模式窗口时出现 Javascript 错误

该应用程序在使用 asp.net 2.0 的 windows server 2003 机器上运行,是一个特定于 IE 的 Web 应用程序。有一个按钮可以使用来自 JavaScript 中的函数调用的 showModalDialog(...) 在 iframe 中打开表单。

下面是一个函数示例:

主机框架正在加载一个包含正在使用的实际表单的 aspx 页面。在打开的表单上有一个按钮,单击该按钮时,提交更改为表单。但是,如果在提交表单之前没有进行任何更改,则会弹出另一个模式窗口,说明表单没有更改。这个模态窗口是通过在按钮单击事件中注册一些 JavaScript 来打开的。代码如下(C#):

当单击按钮并且需要出现此对话框时,会出现以下 JavaScript 错误:

错误:对象不支持此属性或方法

奇怪的是,如果我在本地访问应用程序并尝试一切正常,但从另一台计算机访问会导致错误。此外,取决于什么服务器(我们有许多服务器用于测试所有使用 windows server 2003 的服务器),该错误也可能不会在另一台计算机上发生。这些计算机使用相同版本的 IE 和相同的设置运行相同的软件版本。我倾向于相信某处存在一些配置问题,但是设置相同很难说。我无法真正改变应用程序的工作方式或使用的技术。

有人对可能导致这种情况的原因有任何想法吗?

0 投票
1 回答
680 浏览

showmodaldialog - 了解 showModalDialog

我有一个购物车页面,其中我的“信用卡付款”按钮会触发一个弹出窗口:

window.showModalDialog(ccPaymentURL, null, "dialogwidth: 450px; dialogheight: 370px; center: yes; resizable: yes");

加载到此弹出窗口(位于不同域中的 SSL 页面)中的 URL 收集 CC 信息、处理费用并(通过在原始站点上运行的 Web 服务)将订单标记为“已付费”。

此时,弹出窗口应该刷新父级 - 让父级重新查询数据库并发现订单已支付并重新显示更新的订单状态。

我的集成测试显示一切正常。但实际上......一些用户在某处打破了链条,父页面无法重新加载。我怀疑这与不同的浏览器(和/或浏览器设置)如何处理 showModalDialog 有关,所以我正在寻找在尝试实现这种用例时可能出错的已知事物的概述。

谢谢

0 投票
3 回答
5181 浏览

delphi - Delphi - 检测我的应用程序是否打开了模式对话框

我有一个 Delphi 2006 应用程序,当检测到错误情况时会弹出一个模式警报对话框。由于错误条件的检查是在空闲处理程序中完成的,因此如果碰巧显示了另一个模式对话框,则该对话框可以弹出到另一个模式对话框的顶部。这可能会导致用户感到困惑,即在关闭警报对话框后应用程序主窗体没有获得焦点,因为这是另一个模糊的模态对话框。

我想做的是在应用程序打开任何模态对话框时推迟警报弹出窗口。

我试过 GetLastActivePopup (MyMainWindow.Handle) 但它似乎一直返回非零。

0 投票
1 回答
8035 浏览

javascript - ASP.NET 跨域模式窗口 (window.showModalDialog) - 参数值始终“未定义”

我有两个网页,父页面 .aspx 和子页面 .html。在父页面上,我有 JavaScript 函数,用于通过 window.showModalDialog 将子页面作为模式窗口调用。

}

在子页面上,我有以下内容:

因此,当我启动父窗口并调用子模态窗口时,单击按钮 Button1 时,带有“someValue”的参数会返回到父窗口(到 modalReadyForTest 控件)。

当我在同一个域上同时拥有父页面和子页面时,它可以正常工作。当我将它们放在不同的域上时,参数的值不会被传递,而是总是“未定义”。

有没有办法让不同域的模式窗口将参数值返回到父页面?这些跨域问题可以完全解决还是我应该尝试完全不同的方法?

我将非常感谢任何帮助。

谢谢, 安瓦尔

0 投票
1 回答
1783 浏览

popup - 如何停止'window.showModalDialog'打开第二个窗口?

在 Microsoft 的文档中,我找不到有关如何禁用此功能的问题的答案。

设置是我打开了一个浏览器,它调用window.showModalDialog. 用户在弹出窗口中输入输入并提交后,会从弹出窗口中打开一个新窗口。

我不希望原始弹出窗口的结果打开一个新窗口。结果应提交回调用第一个弹出窗口的原始浏览器窗口。

我已经用 Mozilla 和 IE8 完成了这项工作,但想让我的实现与其他 Internet Explorer 版本向后兼容。