Delphi TWebBrowser对单击文件超链接没有响应

Delphi TWebBrowser对单击文件超链接没有响应,delphi,internet-explorer,delphi-7,twebbrowser,Delphi,Internet Explorer,Delphi 7,Twebbrowser,我有TWebBrowser组件(Delphi7),我从内存流加载HTML。页面的HTML代码加载良好,页面显示正确。但是,当我尝试单击任何地址(href属性值)为“”的超链接时file:///C:/dir/page.html“,什么也没发生。没有错误消息,浏览器不会尝试转到其他页面。URL是100%正确的-当我将相同的网页加载到相同的TWebBrowser实例时,但是从硬盘上的文件,而不是从内存流,这个链接可以正常工作。 有什么想法吗 我试图执行以下语句: OleCheck(WebBrowse

我有TWebBrowser组件(Delphi7),我从内存流加载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的行为方式相同——我只是重新检查了它

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



多亏了大家,我终于用临时目录中的文件解决了这个问题。

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

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

以下是一些含泪的文章:




您是否尝试用普通的
http://
链接替换
文件://
链接?我刚刚尝试过。带有“http://”协议的链接可以正常工作。带有“file://”的链接不存在。单击“file://”链接时,似乎什么都没有发生。我检查了我定义的所有事件处理程序,没有一个被调用。所以这可能是被禁止的。正如微软在这里所说的
Internet Explorer 6 Service Pack 1(SP1)不再允许从Internet区域浏览本地计算机
,可能您的内存流将IE视为“Internet区域”的站点。@daemon_x,@GreyWolf:是的,由于我怀疑的本地文件而导致的安全设置。我不知道是否有可能改变这个。