0

我有一个嵌入 IE WebBrowser 控件的 Windows 应用程序,并运行本地网络服务器来提供内容。我加载的 URL 仅在应用程序内有意义,在应用程序退出后无效。用户永远看不到它们。它们看起来像这样:

http://127.0.0.1:1234/something.html

其中1234是该会话的随机端口号。

但是这些 URL 出现在 IE 浏览器的地址栏历史记录中 - 当我在 Internet Explorer 的地址栏中键入“1”时,会出现一个下拉列表,其中包含我所有的 URL。在这种情况下,它们毫无用处。

所以,我的问题是:如何防止我的 URL 污染该下拉列表?

更多信息:我正在使用 加载 URL window.location.href = URL,而不是通过该Navigate方法,所以navNoHistory不是一个选项(我认为无论如何这指的是后退/前进历史)。

我也尝试在使用 之后删除 URL IUrlHistoryStg::DeleteUrl(),但它不起作用(它返回成功但没有效果) - 任何有关使该工作的提示将不胜感激。

4

2 回答 2

2

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

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

不过,我还是宁愿他们一开始就没有到达那里。

于 2009-04-30T13:47:16.607 回答
0

我最初的答案与您想要的完全相反。

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

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

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

<script>
    function GoTo(url) {
        location = url;
    }
</script>
于 2009-04-30T11:36:51.647 回答