Javascript window.showmodaldialog在chrome中不工作

Javascript window.showmodaldialog在chrome中不工作,javascript,c#,jquery,asp.net,forms,Javascript,C#,Jquery,Asp.net,Forms,我正在为我的项目使用VS2010快速版 我已经创建了一个注册表,它有提交按钮,这将打开新窗口的子窗口 它包含aspx按钮 子窗口再次包含一个由我们填写的表单,单击保存按钮后,该表单被保存,保存后,如果我们关闭子窗口,则注册表单被提交 页面加载包含一个调用javascript的函数。 btnSubmit.Attributes.AddOnClick,单击否;; 因为window.showmodaldialog无法在chrome上运行。我使用了window.open,但它也不能正常工作,因为它打开了子

我正在为我的项目使用VS2010快速版

我已经创建了一个注册表,它有提交按钮,这将打开新窗口的子窗口

它包含aspx按钮

子窗口再次包含一个由我们填写的表单,单击保存按钮后,该表单被保存,保存后,如果我们关闭子窗口,则注册表单被提交

页面加载包含一个调用javascript的函数。 btnSubmit.Attributes.AddOnClick,单击否;; 因为window.showmodaldialog无法在chrome上运行。我使用了window.open,但它也不能正常工作,因为它打开了子窗体,关闭后注册表出现错误消息,请填写该窗体。 下面是页面加载时调用的javascript代码

} 请帮助我使它再次正常工作,因为它在chrome更新之前工作得很好。 请让我知道任何解决此问题的好方法。

如您所知,Window.showModalDialog已被弃用,Chrome不再支持版本37中的它,并已从版本43中完全删除

改用Windows.showModalDialog polyfill

如您所知,window.showModalDialog已弃用,Chrome不再支持版本37中的Windows.showModalDialog,并已从版本43中完全删除


改为使用,或者,如果更改成本太高,请尝试此操作,这是一个窗口。showModalDialog polyfill

许多旧版asp应用程序都存在此问题。我找到了至少3种不同的方法,但最终还是选择了一种简单得多的方法,我认为这是解决您问题的可能方法。它可以很好地修复经典的asp页面,但也可以在.Net环境中使用。以下是该方法的伪代码:

在调用表单javascript中:

var chrome_pop_up_window = null; //global for next few functions
function uploadChromeFinished(parameters) {
    //do something with parameters
    if(chrome_pop_up_window != null) {
        chrome_pop_up_window.close();
        chrome_pop_up_window = null;
    }
}
function OpenChild() {
    if(!window.showModalDialog)
         chrome_pop_up_window = window.open(url, "_blank", other_settings);
    else {
         var result = showModalDialog(...);
    }
}
然后在子页面中,我准备了一个文档,它知道是关闭窗口模式还是调用开启器的函数。打开器是打开弹出窗口的页面。对于.net,我建议使用设置一个隐藏变量的回发,让页面知道它已完成

if(document.getElementById("am_I_finished").value = 'true') {
      window.opener.uploadChromeFinished(parameters_if_needed);
else {
     window.dialogArguments.something = some_value_if_needed;
     window.returnValue = true; //or false         
     windlow.close();
}

最终的结果是,无论是在Chrome还是IE中,弹出窗口都会被打开,并且无论是在Chrome还是IE中,子窗口都可以在关闭时将信息传回父窗口,尽管在Chrome的情况下,父窗口实际上是在从子窗口获取参数值后关闭子窗口。不需要插件或json。

许多传统asp应用程序都存在此问题。我找到了至少3种不同的方法,但最终还是选择了一种简单得多的方法,我认为这是解决您问题的可能方法。它可以很好地修复经典的asp页面,但也可以在.Net环境中使用。以下是该方法的伪代码:

在调用表单javascript中:

var chrome_pop_up_window = null; //global for next few functions
function uploadChromeFinished(parameters) {
    //do something with parameters
    if(chrome_pop_up_window != null) {
        chrome_pop_up_window.close();
        chrome_pop_up_window = null;
    }
}
function OpenChild() {
    if(!window.showModalDialog)
         chrome_pop_up_window = window.open(url, "_blank", other_settings);
    else {
         var result = showModalDialog(...);
    }
}
然后在子页面中,我准备了一个文档,它知道是关闭窗口模式还是调用开启器的函数。打开器是打开弹出窗口的页面。对于.net,我建议使用设置一个隐藏变量的回发,让页面知道它已完成

if(document.getElementById("am_I_finished").value = 'true') {
      window.opener.uploadChromeFinished(parameters_if_needed);
else {
     window.dialogArguments.something = some_value_if_needed;
     window.returnValue = true; //or false         
     windlow.close();
}

最终的结果是,无论是在Chrome还是IE中,弹出窗口都会被打开,并且无论是在Chrome还是IE中,子窗口都可以在关闭时将信息传回父窗口,尽管在Chrome的情况下,父窗口实际上是在从子窗口获取参数值后关闭子窗口。不需要插件或json。

我们没有任何其他方法可用于此窗口。showmodaldialog?因为我的代码已经部署好了,我想对它做一些小的更改,而不是使用引导。非常感谢你的建议,非常感谢。看看这些答案:显示模态对话框替代源代码:Polyfill也不能正常工作。请为此建议一些替代方案。我们没有任何替代方案用于此窗口。showmodaldialog?因为我的代码已经部署好了,我想对它做一些小的更改,而不是使用引导。非常感谢你的建议,非常感谢。看看这些答案:显示模态对话框替代源代码:Polyfill也不能正常工作。请建议一些替代方案。