【问题标题】:WPF WebBrowser fails to load rendered HTML of an Angular JS websiteWPF WebBrowser 无法加载 Angular JS 网站的呈现 HTML
【发布时间】:2015-02-11 08:32:49
【问题描述】:

我正在开发一个 WPF 应用程序,我想获得一个使用 Angular JS 技术的网站的渲染 HTML。这是我尝试过的:

首先,我创建一个 WPF Web 浏览器控件:

private WebBrowser webBrowser;

然后我将它导航到我的目标网页:

var uri = new Uri("http://my-angualrjs-site.com", UriKind.RelativeOrAbsolute);
webBrowser.Navigate(uri);

在我的WebBrowser 实例的LoadCompleted 事件处理程序中,我将检索到的文档转换为mshtml.HTMLDocument

var doc = (mshtml.HTMLDocument) webb.Document;

我得到的只是页面的原始 HTML,而不是 Angular JS 从服务器处理和呈现的 HTML。我错过了什么吗?

【问题讨论】:

  • 您是否尝试过等待 30 秒然后抓取 HTML?
  • 您是否暗示LoadCompleted 在实际加载完成之前触发?
  • 好吧,一旦 HTML 等关闭,它就会触发,但是 AngularJS 只是在这一点上开始做这件事。根据 API 调用等 Angular 在客户端执行的操作,可能需要几秒钟才能获得最终结果。这适用于任何客户端 Javascript 框架。
  • @JMK,等待的解决方案就像一个魅力,谢谢。
  • @Noseratio,我正在研究你更优雅的解决方案,也谢谢你。

标签: wpf angularjs webbrowser-control htmldocumentclass


【解决方案1】:

我遇到了类似的问题,无法在控件中正确呈现有角度的页面。 在遵循 Noseratios 的回答后,它的渲染和工作都很好。 也许这对你也有帮助: C# webbrowser Ajax call

总之,你需要给控件添加特性,让行为更接近IE。

通过他的解决方案,您将能够使用以下代码:

SetBrowserFeatureControlKey("FEATURE_AJAX_CONNECTIONEVENTS", fileName, 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2019-11-04
    相关资源
    最近更新 更多