zoukankan      html  css  js  c++  java
  • 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;
                }
            }

  • 相关阅读:
    小X的密码破译
    小X的加法难题
    足球联赛
    机器分配
    化装晚会
    Soundex编码
    迷之阶梯
    使用JMeter做压力测试
    SCOI 2010 序列操作
    动态求区间K大值(权值线段树)
  • 原文地址:https://www.cnblogs.com/zty1294625258/p/8533671.html
Copyright © 2011-2022 走看看