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;
                }
            }

  • 相关阅读:
    又快又准的sql瓶颈诊断方法
    Qps从300到1500的优化过程
    Mysql性能优化全揭秘-庖丁解牛
    java学习笔记16-抽象类
    java学习笔记15-封装
    java学习笔记14-多态
    java学习笔记13-重写与重载
    Git学习笔记08-远程仓库
    Python3+Appium学习笔记09-元素定位android_uiautomator
    Python3+Appium学习笔记08-元素定位
  • 原文地址:https://www.cnblogs.com/zty1294625258/p/8533671.html
Copyright © 2011-2022 走看看