我有一个嵌入IE WebBrowser控件的Windows应用程序,并运行本地Web服务器来为其提供内容。我加载的URL仅在应用程序中有意义,并且在应用程序退出后无效。它们永远不会被用户看到。它们看起来像这样:
http://127.0.0.1:1234/something.html
其中1234
是该会话的随机端口号。
但是这些网址出现在IE浏览器的地址栏历史记录中 - 当我在Internet Explorer的地址栏中输入“1”时,会出现一个下拉列表,其中包含我的所有网址。在这种情况下,它们毫无用处。
所以,我的问题是:如何防止我的网址污染该下拉列表?
更多信息:我正在使用window.location.href = URL
加载网址,而不是通过Navigate
方法加载网址,因此navNoHistory
不是一个选项(我认为这是指无论如何,返回/转发历史。)
我还尝试使用IUrlHistoryStg::DeleteUrl()
删除URL,但它不起作用(它返回成功但没有效果) - 任何有关完成这项工作的提示都会感激不尽。
答案 0 :(得分:2)
我现在已经使用IUrlHistoryStg::DeleteUrl()
完成了这项工作 - 如果您在要求控件加载URL后立即调用它,它就不起作用。我猜这是因为在完成加载文档之前,控件不会将URL添加到历史记录中。
稍后通过调用IUrlHistoryStg::DeleteUrl()
,我可以从历史记录中删除网址。
答案 1 :(得分:0)
我原来的回答与你想要的完全相反。
我无法复制您的体验,但我没有使用浏览器控件。
我会尝试在html或隐藏的框架/ iframe中添加一个脚本并包装调用,以便浏览器在包装器脚本中执行它。
基于脚本的Navigates不应该输入历史记录,我花了一些时间想出一种方法来破解IE实际使用我原来的答案中的click()事件触发器添加历史记录项。
<script>
function GoTo(url) {
location = url;
}
</script>