【问题标题】:Is there a technical reason not to use a TWebBrowser in Delphi to view Google Earth?是否有技术原因不在 Delphi 中使用 TWebBrowser 来查看 Google 地球?
【发布时间】:2012-07-04 07:05:59
【问题描述】:

我确实希望这不会因为主观而被删除。唯一主观的部分可能是 1)我的 Delphi 比我的 PHP 更好,2)我更喜欢编译而不是解释性编程语言。

但是,实际(非主观)问题是 - 如果我选择 Delphi 并使用 TWebBrowser(或类似机制)来查看/操作 Google 地球,我会以任何方式限制我的可用功能吗?

是否有一些我只能“在浏览器中”做而不能“在 VCL 浏览器组件中”做的事情?

[更新] 我忘了说 1)我只对 Windows 感到满意,2)谷歌地球功能只是一个更大的 APP 的一部分(对我来说,将该应用程序实现为 Delphi 程序更容易)不是基于浏览器的东西,但这听起来很主观,这就是为什么我从来没有提到它.我会坚持“如果我选择 Delphi 并使用 TWebBrowser,我会以任何方式限制我的可用功能吗?”作为问题,因为可以回答。

【问题讨论】:

  • 您会将自己限制在运行代码的平台上。如果您在 TWebBrowser 上构建,通常是 Windows。
  • 如果有人在 Mac OS 上测试过 TChromiumFMX,我是 still wondering,如果可能的话。
  • 好的,问题是“Delphi”还是“PHP”?如果您没有与 PHP 绑定,请查看 Python。
  • 我发现 Chrome 嵌入式框架 (CEF) 为我提供了比 IE 更高的性能。其次,我发现来自 bsalsa2000.com 的TEmbeddedWB 是 InternetExplorer (IShellDocView) 的包装器,比安装在 delphi 中的 TWebBrowser 更好。事实上,TWebBrowser 的一个可取之处在于它已经内置。如果您对它满意,使用它并没有错。
  • 那里有几个 +1。一如既往地感谢沃伦。你的任何建议总是值得的。顺便说一句,URL 中没有“2000”。更多信息bsalsa.com/product.html

标签: delphi google-maps twebbrowser


【解决方案1】:

没有技术原因不使用TWebBrowser 来显示地图或任何与此相关的东西。事实上,这是一个见仁见智的问题,你很可能已经听到人们的意见告诉你不要这样做。不幸的是,Stack Overflow 是一个问答网站,所以这样的问题不一定可行。

TWebBrowser 封装了 Internet Explorer 浏览器窗口,并依赖于安装的任何版本的 IE。您可以在 Internet Explorer 中打开的任何内容也可以在 TWebBrowser(包括 Google 地球)中打开。只需将其指向一个页面并加载它。至于技术原因,这里和那里可能会有一些小故障,但我不明白为什么不。

【讨论】:

  • +1,其中 +2 用于回答问题,-1 表示这里和那里可能会出现一些小故障,因为有些小故障非常关键。跨度>
  • 大声笑“故障”。 @TLama,这一切都始于正确理解该组件的工作原理以及您需要填补哪些漏洞才能提供良好的 twebbrowser 体验。
  • “任何可以在 Internet Explorer 中打开的东西也可以在 TWebBrowser 中打开”可能不是 100% 正确,而只有 99.99% 左右。一方面,TWebBrowser 报告的用户代理可能与安装的真实 IE 报告的用户代理不同。
  • @AndreasRejbrand,我记得用户代理与安装的浏览器紧密相关,如果您在程序中更改它,您实际上必须修改注册表,它会更改您安装的用户代理字符串浏览器。这不是真的了吗?
  • 好吧,说得清楚一点,它可能从一开始就不能 100% 满足您的需求,在期待 TWebBrowser 做任何事情之前,肯定有一些事情需要理解和调整所有你想要的。但实际上任何事情都是可能的,只是知道要填补哪些漏洞,就像 whosrdaddy 所说的那样。例如,可以在 Delphi 中捕获 javascript 事件并处理它们,但它还没有为此做好准备,它需要相当多的工作才能使之成为可能。但这仍然是可能的。
【解决方案2】:

是否有一些我只能“在浏览器中”做而不能“在 VCL 浏览器组件中”做的事情?

简短的回答是,如果您完全了解 TWebBrowser(基于 IE)/DelphiChromiumEmbedded(Webkit),则不受限制。

我知道的两个主要浏览器是基于 TWebBrowser/IE 控件的 - Avant Browser(用 Delphi 编写)和 Maxthon(我两个都用过,它们对我很有帮助,直到我完全切换到 FF)——它们从来没有任何兼容性问题(与 IE 应用程序相比)。

TEmbeddedWB 是一个很好的起点 - 该软件包包含 IWebBrowser 接口和控件库 (SHDOCVW.DLL),允许您创建自定义的 Web 浏览应用程序。

Web 浏览器控件有一个非常重要的问题,它默认使用 IE 7 呈现模式。因此您需要为自己的应用程序指定 IE 呈现模式 (see this article)。还有其他问题,但大多数都可以通过注册表FeatureControl 键进行配置和自定义:

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl

【讨论】:

    【解决方案3】:

    是的,有一个 - Chromium Embedded Framework (CEF) 比 IE 具有更高的性能,尤其是在您的最终用户使用早期版本的 IE 的情况下。

    CEF 基于 Google 的开源项目 Chromium。

    我在LIVEditor (my new live html editor)使用CEF,结果非常非常好!

    但请注意,压缩后您必须额外分发 20 MB 的文件。

    【讨论】:

    • 1 谢谢。自从 Warren 推荐以来,我一直在寻找它
    猜你喜欢
    • 2014-04-20
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    相关资源
    最近更新 更多