WPF中使用WebBrowser

Posted Andy-zhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF中使用WebBrowser相关的知识,希望对你有一定的参考价值。

最近在做北京现代项目的时候,遇到一个需求将韩国那边写好的网页嵌套到WPF程序中显示。

开始的时候使用的是第三方的浏览器控件:awesomium,在本地测试,显示没有问题。但是拿到客户现场,只显示半屏。修改各种高度,还是会出现问题,用远程桌面打开,显示正常,百思不得解。

换控件使用微软自带的浏览器控件WebBrowser,升级IE还是会出现显示半屏问题。

查看网页源码,页面显示高度是动态获取的,以下是网页中的JS源码
    var wHeight, header1, header2;
    wHeight = $(window).height();
    header1 = $("div.board_header").outerHeight();
    header2 = $("div.table_header").outerHeight();
    $("div.table_scroll").css("max-height", (wHeight - header1 - header2 - 1 - 40)  + "px");

max-height 获取的值是动态获取的,所以会导致以上的问题。

解决问题思路:页面加载完成,通过注入JS脚本,修改max-height,来显示完整网页。

源码如下:

        /// <summary>
        /// 浏览器加载完成事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ibbWeb_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
        {
            try
            {
                dom = (mshtml.HTMLDocument)ibbWeb.Document; //定义HTML
                dom.documentElement.style.overflow = "hidden"; //隐藏浏览器的滚动条
                dom.body.setAttribute("scroll", "no"); //禁用浏览器的滚动条
                dom.parentWindow.execScript(@"window.onload = function(){ $(‘div.table_scroll‘).css(‘max-height‘, ‘910px‘); setTimeout(‘window.location.href=window.location.href‘,"+refreshPageInterval+") }"); //向页面注入javascript语句
            }
            catch (Exception ex)
            {
                LogInfo.saveLog("加载浏览器控件异常:" + ex);
                return;
            }
        }

























以上是关于WPF中使用WebBrowser的主要内容,如果未能解决你的问题,请参考以下文章

wpf窗口中的资源的混合使用---WPF

WPF 在WPF中使用SVG文件作为图标的正确方法是啥

wpf中如何使用代码设置属性Foreground,或者说设置控件字体颜色。

我在wpf中使用了自定义的控件,请问如何为自定义控件中的一个按钮设置快捷键?

wpf使用C#控件

WPF中使用cefsharp