IE WebBrowser控件:阻止URL进入IE地址栏URL历史记录

时间:2009-04-30 11:26:50

标签: windows internet-explorer webbrowser-control

我有一个嵌入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,但它不起作用(它返回成功但没有效果) - 任何有关完成这项工作的提示都会感激不尽。

2 个答案:

答案 0 :(得分:2)

我现在已经使用IUrlHistoryStg::DeleteUrl()完成了这项工作 - 如果您在要求控件加载URL后立即调用它,它就不起作用。我猜这是因为在完成加载文档之前,控件不会将URL添加到历史记录中。

稍后通过调用IUrlHistoryStg::DeleteUrl(),我可以从历史记录中删除网址。

但是,我仍然宁愿他们最初没有到达那里。

答案 1 :(得分:0)

我原来的回答与你想要的完全相反。

我无法复制您的体验,但我没有使用浏览器控件。

我会尝试在html或隐藏的框架/ iframe中添加一个脚本并包装调用,以便浏览器在包装器脚本中执行它。

基于脚本的Navigates不应该输入历史记录,我花了一些时间想出一种方法来破解IE实际使用我原来的答案中的click()事件触发器添加历史记录项。

<script>
    function GoTo(url) {
        location = url;
    }
</script>