我有此页面:
<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事件取消该事件,但在这种情况下不会触发此事件。
真正的应用程序是控制台应用程序,我什么也无法显示,因此隐藏了浏览器,但正在向用户显示模式窗口。而且我无法在服务器端进行任何更改。我只需要向用户隐藏此模式窗口。
最佳答案
尝试
webBrowser1.Document.InvokeScript("eval", new Object[] { "window.showModalDialog = null;" });
如果要在其他地方显示对话框,可以change
window.showModalDialog
to window.external.showModalDialog
并在对象中实现showModalDialog
方法以编写脚本。关于c# - 隐藏由WebBrowser中的showModalDialog生成的模式窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16246005/