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;
}
}
最新文章
- WIN7下查看CPU核心数
- WPF 变量绑定实现
- php 时间加减
- c#字符串转换为日期,支持任意字符串
- monkey(1)
- 删除所有表数据的sql语句
- javascript获取ckeditor编辑器的值(实现代码)
- C#读取注册表信息
- windows查看端口占用情况及查杀进程
- 3. SQL Server数据库状态监控 - 可用空间
- DNS查询相关
- Python 实现接口类的两种方式+邮件提醒+动态导入模块+反射(参考Django中间件源码)
- cdh日常维护常见问题及解决方案
- 在VS2017上对C++项目进行单元测试
- 物联网架构成长之路(15)-Jenkins部署SpringBoot
- IP addresses in C#
- Mo2C-tag
- j2se j2ee j2me
- Python开发【笔记】:git&;github 快速入门
- LambdaMART简介——基于Ranklib源码(一 lambda计算)
热门文章
- MarkDown 编辑数学公式
- 异步任务利器Celery(一)介绍
- [POJ 3581]Sequence
- 使用JS代码实现点击按钮下载文件
- Spring框架系列(二)之Bean的注解管理
- 用VSCode开发一个基于asp.net core 2.0/sql server linux(docker)/ng5/bs4的项目(2)
- CentOS Crontab(定时任务)
- PHP如何防止XSS攻击
- 使用C#开发C/S框架高级版添加新项目实例
- java日期转化