【问题标题】:How to force JavaScript to be enabled in an embedded WebBrowser control?如何强制在嵌入式 WebBrowser 控件中启用 JavaScript?
【发布时间】:2010-12-03 08:02:27
【问题描述】:

我有一个将 Internet Explorer 作为 WebBrowser 控件嵌入的 C++ 应用程序。

我在该控件中显示的内容依赖于启用的 JavaScript,但如果用户在其 Internet Explorer 安全设置中禁用了 JavaScript,它也会在我的嵌入式控件中被禁用。

如何确保为我的嵌入式 Web 浏览器控件启用 JavaScript?

(抢先评论响应:我完全控制内容,因此启用 JavaScript 不会带来安全风险。)

【问题讨论】:

  • 你的逻辑有缺陷。你不是用户。对于用户和您而言,安全风险可能不是一回事。

标签: internet-explorer webbrowser-control


【解决方案1】:

用户始终可以控制浏览器,或者至少他应该控制。所以强制使用javascript是不可能的。

【讨论】:

    【解决方案2】:

    将 IInternetSecurityManager 和 IDocHostUIHandler 实现为应用程序中的客户端站点。您还可以使用 IDocHostUIHandler::GetOptionKeyPath(...) 拥有自己的 IE 注册表树

    有很多可用的 C++ 和 C# 示例。

    【讨论】:

    • 我不相信GetOptionKeyPath 有帮助,因为控制 JavaScript 的选项位于注册表的“Windows”区域,而GetOptionKeyPath 覆盖了“Internet Explorer”区域。但是IInternetSecurityManager 看起来很有希望——我会尽快调查。谢谢!
    • 只是好奇——您是否成功完成了您的计划?我正在开发一个依赖于 JavaScript 的基于 HTML 的应用程序,如果可以做到这一点,我就可以避免将它与臃肿的 Electron 框架打包在一起。
    【解决方案3】:

    我认为这样做的唯一方法是修改注册表,但您确实需要确保您的应用程序有权这样做,因为它也会影响 Internet Explorer 在您的应用程序之外的运行方式。

    如果您继续使用此KB,它可能会有所帮助。我不确定哪个区域控制会认为你的内容在其中,我想这取决于你如何将这些内容放入其中。

    【讨论】:

    • +1 以获得可行的答案,但我真的不想修改系统范围的设置(即使是暂时的,如果这足够好的话)。我现在可以看到我的下一个 SO 问题:“如何仅为我自己的进程伪造注册表值?” :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    相关资源
    最近更新 更多