确认IE模态对话框关闭以达到有效目的

时间:2010-08-26 21:35:56

标签: javascript asp.net internet-explorer

我刚刚使用.NET 3.5编写了一个Word文档创建Web应用程序,它使用来自SQL后端的XML和XSL-T样式表将word xml文档转换为字母,以便用户发送给客户。一切都运行良好,我对结果感到满意,xslcompiledtransform即使使用膨胀的单词xml文档也非常快:0)。我唯一的问题是这个应用程序是从较旧的.NET 1.1应用程序的模态IE对话框中启动的,客户端希望在关闭模式对话框之前有条件地提示用户。

一旦用户调用了生成过程,就会触发部分回发事件,并且文档列表会显示在更新面板的列表视图中,当他们单击文档的名称时,文档将被提供给他们并且IE显示下载对话框,另一个部分回发用绿色勾选更新列表视图以指示用户已请求该文档。

客户端要求如果用户在请求所有文档之前尝试关闭对话框,则会提示用户确认选项“确定”和“取消”。我使用表单上的实际“关闭”按钮实现了这一点。显示一致的弹出窗口,如果用户单击OK,则窗口将被javascript hack关闭。如果用户决定单击标准窗口x按钮,则会出现问题。我设法使用IE方法将onunload事件添加到正文并返回一个字符串,其中包含Microsoft CRM使用的自定义消息,但由于几个原因,这并不理想。

首先它很难看,我不喜欢这个功能附带的标准无法控制的附加消息。另外我遇到的主要问题是这是因为每个部分帖子都是可以理解的,但是血腥烦人,即使没有生成任何文件,或者他们已经被请求了所有文件。

所以最后我的问题是:我可以理想地以某种方式欺骗IE取消onunload中的闭包,使用标准的javascript确认使用我自己的包含简单逻辑的函数,也许用iframe或类似的?或者在标准IE弹出窗口出现时添加一些逻辑?

我知道这是标准功能,出于良好的安全原因,这是客户真正想要的,这不是一个面向公众的网站,它只在公司内部使用。

很多人提前感谢并为华夫饼干感到抱歉,但我只是想确保尽可能详细地提供详细信息,因为我反驳了“为什么?”的初步问题。

1 个答案:

答案 0 :(得分:0)

随着发布的临近​​,没有人准备筛选我的华夫饼,我选择了标准的IE onbeforeunload事件。在我的js中我有:

window.onbeforeunload = PromptUserToClose

function PromptUserToClose()
  if(!allDownloaded){
     return "Are you sure....."
  }

问题虽然我在我的更新面板中有LinkBut​​tons导致PartialPost支持IE由于某种原因被收集是一个卸载窗口所以绕过它我改为asp:超链接然后添加了一个javascript回发调用从服务器端使用Page.ClientScript.GetPostBackEventReference(Me, "MyCustomArgument")。这完成了这项工作。

由于