【问题标题】:TWebBrowser Cannot Open Blogspot WebsiteTWebBrowser 无法打开 Blogspot 网站
【发布时间】:2013-09-11 07:04:30
【问题描述】:

我在 Windows 7 64 位中使用 Delphi XE2,我将 TWebBrowser 组件放在一个窗体中。我将其导航到 blogspot 网站,例如:

Webbrowser1.Navigate('http://maniacpcgame.blogspot.com');

它显示 JavaScript 错误(HTML Parsing Error),然后我将 Silent 属性设置为 True,如下所示:

Webbrowser1.Silent := true;
Webbrowser1.Navigate('http://maniacpcgame.blogspot.com');

但浏览器无法正常打开页面(只显示背景图片)。我尝试了其他 blogspot 网站并遇到了同样的问题。在 TWebBrowser 中正确显示 blogspot 网站的任何解决方案?

【问题讨论】:

  • 无法在 Windows 7 64 位、IE 9.0.8112.16421 上使用 Delphi 2009 重现。是的,我在加载过程中遇到了 JavaScript 错误,但我已经看到了页面及其内容(不仅是背景图像)。无论如何,从TWebBrowser 的角度来看,您无能为力。您可以忽略错误并在页面上获得意外行为,也可以在您的网站上修复这些错误。
  • ^^^+1 也无法重现 - Windows 7 64 位上的 Delphi XE,相同的 IE 版本

标签: delphi delphi-xe2 twebbrowser


【解决方案1】:

Twebbrowser 使用 IEFRAME

IEFRAME 取决于您在该计算机上运行的 Internet Explorer 的版本 您可以将 IEFRAME.DLL(在 c:windows/system32 中)与您的应用程序一起部署,这样您就可以确保在任何地方都使用相同的版本,这样您就不会在计算机之间出现不一致。

但是较新的不能在 XP 上运行,并且有一些 directx 要求。

一个不错的选择是 Delphi Embed chromium,它使您部署的应用程序更大(+-15MB),但您可以非常确定它在任何地方都可以正常工作(Windows 8 到 XP),并且它总是会产生相同的页面 此外,如果您必须操作 DOM 或插入 javascript(与页面通信) 这将更容易,并且会更一致地工作。

这是最新版本的链接: https://code.google.com/p/dcef3/

【讨论】:

  • 用于 Delphi 的 Chromium 包装器的最新版本是 DCEF 3。而且,我不会说 CEF 中的 DOM 操作更容易。这是一个使用 DOM 快照的纯粹邪恶的工作。
  • 感谢新链接,我发现 dom 操作很棒!你不喜欢它怎么办?如果您必须进行大量操作,您可以使用 JQUERY 编写一个 javascript 文件,然后一次性插入所有内容。
  • 主要是那些快照。您没有使用 living 站点元素,但是 DOM 访问者拍摄了站点的快照,这极大地限制了您(因此我永远不会将其与 MSHTML 进行比较)。
  • @TLama 快照似乎是拥有一致 DOM 树而不是活树的好解决方案,它不支持某种“事务”读取(和写入)。从一个活生生的 DOM 中读取听起来像是一个移动的目标。
猜你喜欢
  • 2013-12-18
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
相关资源
最近更新 更多