3

我有 TWebBrowser 组件(Delphi 7),我从内存流中加载了 HTML。页面的 HTML 代码加载正常,页面显示正确。但是,当我尝试单击任何带有地址(href 属性值)的超链接时,例如“file:///C:/dir/page.html”,什么都没有发生。没有错误消息,浏览器也不会尝试转到另一个页面。URL 是 100% 正确的 - 当我将相同的网页加载到相同的 TWebBrowser 实例,但从硬盘驱动器上的文件,而不是从内存流中,这个链接工作正常。有什么想法可能是错的吗?


我试图执行以下语句:

OleCheck(WebBrowser.SecurityManager.SetZoneMapping(URLZONE_INTRANET, 'about:blank', SZM_DELETE));
OleCheck(WebBrowser.SecurityManager.SetZoneMapping(URLZONE_TRUSTED, 'about:blank', SZM_DELETE));
OleCheck(WebBrowser.SecurityManager.SetZoneMapping(URLZONE_INTERNET, 'about:blank', SZM_DELETE));
OleCheck(WebBrowser.SecurityManager.SetZoneMapping(URLZONE_UNTRUSTED, 'about:blank', SZM_DELETE));
OleCheck(WebBrowser.SecurityManager.SetZoneMapping(URLZONE_LOCAL_MACHINE, 'about:blank', SZM_DELETE));
OleCheck(WebBrowser.SecurityManager.SetZoneMapping(URLZONE_LOCAL_MACHINE, 'about:blank', SZM_CREATE));

,但它们没有改变任何东西(它们被正确执行,没有错误,即 HRESULT = S_OK 一直)。我必须说该组件实际上是 TEmbeddedWB(它具有 SecurityManager 属性),尽管 TWebBrowser 的行为方式相同 - 我只是重新检查了它。

我考虑使用临时目录中的文件。


感谢大家,我终于通过使用临时目录中的文件解决了这个问题。

4

1 回答 1

1

对于您的问题:Internet Explorer 本身是错误的

即,如果不更改自 IE 7 以来的安全设置,就不可能从从 file:// 位置以外的其他位置加载的网站访问本地文件。正如您已经提到的,最简单的解决方法是从 file:// 位置打开网站您的本地驱动器,然后您将获得此访问权限。

以下是一些关于此的泪流满面的文章:

文件 URI 链接到 IE7 中的本地文件夹不起作用
http://blogs.msdn.com/b/freeassociations/archive/2005/05/19/420059.aspx
http://blogs.msdn.com/b/ie/archive /2005/08/15/452006.aspx

于 2011-04-27T20:51:15.977 回答