我正在尝试在UWP应用程序中的XAML-WebView控件中实现内容适合缩放功能。由于半官方缩放解决方案似乎使用JavaScript,因此我的方法是动态设置body元素的“zoom”CSS属性。现在的问题是找到正确的缩放因子。根据文档,WebView在文档模式下使用Edge浏览器。然而,在Edge中,我发现
这在桌面IE11设置为IE10文档模式、Edge以及其他许多浏览器(例如Chrome)中都可以工作,基本上我测试过的所有浏览器。然而,在使用Edge的Windows 10 UWP应用程序中应该使用
问题在于,在
有人知道在
编辑:我想缩放的网页的最小示例如下:
这个网页只有一个蓝色方框。我希望有一种方法可以将该方框缩放以适应屏幕,即设置缩放因子使蓝色方框填满屏幕。但对于这个页面,Edge 返回的
document.body.clientWidth
属性始终返回文档宽度,无论窗口大小甚至缩放因子如何。因此,我使用以下方式设置缩放因子:document.body.style.zoom = (window.innerWidth * 100 / document.body.clientWidth) + '%'
这在桌面IE11设置为IE10文档模式、Edge以及其他许多浏览器(例如Chrome)中都可以工作,基本上我测试过的所有浏览器。然而,在使用Edge的Windows 10 UWP应用程序中应该使用
WebView
控件时,它无法工作(感谢Jay Zuo的更新)。问题在于,在
WebView
控件中,document.body.clientWidth
一旦设置,就始终与window.innerWidth
相同,因此得到的缩放因子始终为100%
,这是错误的。我希望每当用户调整窗口大小时都能重新调整显示的页面。有人知道在
WebView
控件中可以使用哪个替代属性来获取首选文档宽度吗?编辑:我想缩放的网页的最小示例如下:
demo.html:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta charset="utf-8">
<title>Demo</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="container">
</div>
</body>
</html>
style.css:
@charset "utf-8";
body {
background-color: #FFF;
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
overflow: hidden;
width: 102px;
height: 76px;
}
#container {
position: relative;
width: 102px;
height: 76px;
padding-top: 0px;
background-color: blue;
background-size: 102px;
background-repeat: no-repeat;
}
这个网页只有一个蓝色方框。我希望有一种方法可以将该方框缩放以适应屏幕,即设置缩放因子使蓝色方框填满屏幕。但对于这个页面,Edge 返回的
body.clientWidth=102
不管窗口大小如何,因此,缩放因子应该被正确计算。
document.body.clientWidth
属性也受窗口大小的影响。请参见我的截图。 - Jay ZuoWebView
中测试您的演示时,document.body.clientWidth
始终返回102
。我使用了类似于以下代码的测试:var result = await webView.InvokeScriptAsync("eval", new string[] { "document.body.clientWidth.toString()" });
。正如您所知,clientWidth
属性的返回值也与网站显示有关。如果网站使用响应式UI,则clientWidth
的值也会受窗口大小的影响。 - Jay Zuodocument.body.style.zoom
和document.body.zoom
搞混了,这是没有意义的。无论如何,现在它可以工作了,尽管我不知道具体改变了什么。 - Georg