阻止WebBrowser对象创建历史记录
本文关键字:历史 记录 创建 对象 WebBrowser 阻止 | 更新日期: 2023-09-27 18:06:46
我有一个客户项目,其中将采取一块客户信息,并使用它来打开web浏览器。他们目前通过在默认浏览器中使用一个打开URL("http://server.com/?customerID=XYZ")的按钮来做到这一点。然而,他们不喜欢这种解决方案,因为他们的用户倾向于将这些(非常机密的)信息留在屏幕上的时间超过必要的时间,并且它将链接留在浏览器的历史记录中,因此用户可以一次又一次地打开它。
解决方案是请求一个应用程序,该应用程序将在一个单独的窗口窗体中打开链接,用户无法使用导航,并在一段时间后自动关闭。我有那块工作得很好,但是在我的表单中打开WebBrowser对象中的链接仍然会将链接插入IE的浏览器历史记录中。
我找不到任何解决方案来使WebBrowser对象私有或删除在c#中工作的历史记录,所以任何关于这方面的帮助将非常感谢。
我最终启动了一个inPrivate窗口并在其中打开了表单。然后,我的表单查找iexplorer .exe进程,并在30秒结束时杀死它。
System.Diagnostics.Process.Start(@"c:'program files'internet explorer'iexplore.exe","-private " + _url);
计时器完成后:
var procs = System.Diagnostics.Process.GetProcessesByName(_name);
foreach (var proc in procs)
{
proc.Kill();
}
这是一个旧的帖子,他们说私有模式是不可能的。所以你可能无法禁用浏览器历史记录。
一种解决方案是在一定时间后关闭表单并使数据无效,这样url就无法重新打开。
你可以用Javascript:
在调用特殊Url(无论语法如何)的页面上设置超时
setTimeout(function(){
window.location.href = 'special_close';
}, 30000);
然后你可以在webbrowser导航事件中拦截这个url并关闭这个表单:
private void Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (e.Url.OriginalString == "special_close")
{
// close form that contains webbrowser
// invalidate data here such that url can't be reloaded
}
}