隐藏WebBrowser中由showModalDialog生成的模态窗口

Hide modal window generated by showModalDialog in WebBrowser

本文关键字:模态 窗口 WebBrowser 中由 showModalDialog 隐藏      更新时间:2023-09-26

我有这个页面:

<body>
    <script>
        function showModal() {
            // do some things here...
            var address = 'http://localhost:61948/modal.aspx';
            window.showModalDialog(address);
        }
    </script>
    <form id="form1" runat="server">
    <div>
        <input id="btnModal" type="button" value="button" onclick="showModal();" /></div>
    </form>
</body>

然后我有一个WebBrowser点击这个按钮

public Form1()
{
    string url = "http://localhost:61948/WebForm1.aspx";
    InitializeComponent();
    webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
    webBrowser1.Navigate(url);
}
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    webBrowser1.Document.GetElementById("btnModal").InvokeMember("click");
}

问题是我不应该显示模态,但我必须点击按钮。我已经尝试使用newWindow事件来取消事件,但是在这种情况下这个事件没有被触发。真正的应用程序是一个控制台应用程序,我不能显示任何东西,然后我隐藏了浏览器,但模态窗口正在显示给用户。我不能改变服务器端的任何东西。我只需要对用户隐藏这个模态窗口

Try

webBrowser1.Document.InvokeScript("eval", new Object[] { "window.showModalDialog = null;" });

如果你想在其他地方显示对话框,你可以将window.showModalDialog更改为window.external.showModalDialog,并在你的对象中实现showModalDialog方法。