Delphi TWebBrowser不响应单击文件超链接

时间:2011-04-26 19:36:41

标签: delphi internet-explorer delphi-7 twebbrowser

我有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的行为方式相同 - 我只是重新检查它。

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


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

1 个答案:

答案 0 :(得分:1)

问题: Internet Explorer本身是错误的

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

以下是一些含泪的文章:

File URI link to local folder in IE7 not working
http://blogs.msdn.com/b/freeassociations/archive/2005/05/19/420059.aspx
http://blogs.msdn.com/b/ie/archive/2005/08/15/452006.aspx