WPF 应用 - 通过 js 缩放 System.Windows.Controls.WebBrowser 的内容

1. 前提

  • 原本是在大屏上展示系统,系统有个功能是加载第三方的网站,第三方网站按照大屏的分辨率写死了宽高;
  • 现需要改到小屏展示系统,而这个第三方的网站不能随着 WebBrowser 窗口的尺寸调整网站内容的尺寸。

2. 解决思路

1)加载完毕后,调用 InvokeScript 方法执行在当前加载的文档中定义的脚本函数,简单说就是调用网站的 js 方法;
2)网站未必会定义一个实现相关功能的方法,因此我们可以通过 eval 方法执行 js 代码。

<Grid x:Name="wb" Margin="10" Background="White">
    <WebBrowser Margin="0" x:Name="wbLeft" Source="about:blank"></WebBrowser>
</Grid>
wbLeft.Width = wb.ActualWidth;
wbLeft.Height = wb.ActualHeight;
string url = string.Empty;
wbLeft.Navigate(url);

wbLeft.LoadCompleted += (s,e)=>
{
    wbLeft.InvokeScript("eval", new object[] { "document.body.style.zoom = 0.8;" });
};

题外话:

<script type="text/javascript">

eval("x=10;y=20;document.write(x*y)")

document.write(eval("2+2"))

var x=10
document.write(eval(x+17))
</script>

输出 
200
4
27
posted @ 2021-03-08 21:43  鑫茂  阅读(69)  评论(0编辑  收藏  举报