Ric*_*ano 3 c# webbrowser-control winforms
我在应用程序中嵌入了一个简单的Web浏览器,允许用户搜索Wikipedia,并且我试图阻止用户浏览维基百科以外的其他网站(例如,通过单击外部链接引用).现在,我正在使用这个简单的代码:
this.textBoxAddress.Text = this.webBrowser.Url.ToString();
if (this.webBrowser.Url.Host != "en.wikipedia.org")
{
this.webBrowser.Visible = false;
this.labelErrorMessage.Visible = true;
}
else
{
this.webBrowser.Visible = true;
this.labelErrorMessage.Visible = false;
}
Run Code Online (Sandbox Code Playgroud)
此代码有效,但页面在运行时已加载.如果我将此代码放入_Navigating
事件中以尝试在加载页面之前抢先停止用户,则会失败,因为Web浏览器控件Url
在页面加载之前不会更新属性.
我不喜欢这段代码的原因是因为页面在调用时已经加载了,因此该页面中的任何错误(例如显示弹出窗口的脚本错误)都会显示,即使网页没有.
由于各种原因,我已经阅读了不使用WebBrowser控件的消息来源,但在这种情况下,安全性不是主要问题.我也不需要担心最终用户做某事,因为这个应用程序是一个只有一个用户的内部应用程序,他不会绕过安全性.
在IE的设置中禁用所有其他页面也不是解决方案,因为此用户利用IE进行其他冲浪,并且该组织的Intranet站点也在IE上运行(并且这些地址发生变化,因此简单地允许所有这些都很难预料).
MNG*_*inn 10
订阅WebBrowser.Navigating
活动.检查WebBrowserNavigatingEventArgs.Url
属性并设置WebBrowserNavigatingEventArgs.Cancel=true
它是否不是维基百科.
归档时间: |
|
查看次数: |
1766 次 |
最近记录: |