【问题标题】:Hide modal window generated by showModalDialog in WebBrowser在 WebBrowser 中隐藏由 showModalDialog 生成的模态窗口
【发布时间】:2013-04-21 04:37:13
【问题描述】:

我有这个页面:

<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 事件取消该事件,但在这种情况下不会触发此事件。 真正的应用程序是一个控制台应用程序,我什么都不能显示,然后我隐藏了浏览器,但模态窗口正在向用​​户显示。而且我无法在服务器端更改任何内容。我只需要对用户隐藏这个模态窗口。

【问题讨论】:

    标签: c# javascript winforms webbrowser-control


    【解决方案1】:

    试试

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

    如果你想在其他地方显示对话框,你可以change window.showModalDialog to window.external.showModalDialog 并在你的对象中实现一个showModalDialog 方法来编写脚本。

    【讨论】:

    • 它有效,但我已将网络浏览器属性 ScriptErrorsSuppressed 设置为 true,否则 IE 会显示脚本错误窗口。谢谢!
    • 脚本错误也可以通过将 window.showModalDialog 更改为与原始签名具有相同签名的实际函数来避免
    猜你喜欢
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多