【问题标题】:Delphi TWebBrowser does not respond to clicking on file hyperlinksDelphi TWebBrowser 不响应单击文件超链接
【发布时间】:2011-04-26 19:36:41
【问题描述】:

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

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


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

【问题讨论】:

  • 您是否尝试将file:/// 链接替换为普通的http:// 链接?
  • 我刚试过。带有“http://”协议的链接确实有效。带有“file://”的链接没有。
  • 点击“file:///”链接时似乎没有任何反应。我检查了我定义的所有事件处理程序,但没有一个被调用。
  • 所以它可能是被禁止的。正如MS在这里所说的msdn.microsoft.com/en-us/library/aa767731%28v=vs.85%29.aspxInternet Explorer 6 Service Pack 1 (SP1) no longer allows browsing a local machine from the Internet zone,也许您的内存流将IE视为“Internet区域”中的站点。
  • @daemon_x, @GreyWolf:是的,我怀疑本地文件的安全设置。不知道能不能改。

标签: delphi internet-explorer delphi-7 twebbrowser


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多