缩放内容以适合 UWP WebView

2024-03-08

我正在尝试在 UWP 应用程序内的 XAML-WebView 控件中实现缩放到内容适合功能。作为半官方的缩放解决方案 https://code.msdn.microsoft.com/windowsapps/How-to-zoom-inout-the-5a42229b似乎正在使用 JavaScript,我的方法是动态设置zoombody 元素的 CSS 属性。

现在的问题是找到正确的缩放系数。

根据文档,WebView 在文档模式下使用 Edge 浏览器。

然而,在 Edge 中,我发现document.body.clientWidth-property 始终返回文档宽度,无论窗口大小甚至缩放系数如何。因此,我使用设置缩放系数

document.body.style.zoom = (window.innerWidth * 100 / document.body.clientWidth) + '%'

这适用于设置为 IE10 文档模式的桌面 IE11、Edge 以及一系列其他浏览器(例如 Chrome),基本上是我测试过的所有浏览器。但是,它不适用于WebView-control 应该在 Windows 10 UWP 应用程序中使用 Edge(感谢 Jay Zuo 的更新)。

问题是在WebView控制,document.body.clientWidth一旦设置,总是与window.innerWidth这样得到的缩放系数总是100%,这是错误的。每当用户调整窗口大小时,我想重新调整显示的页面。

有谁知道可以使用什么替代属性来获取首选文档宽度WebView控制?

Edit:我想要放大的网页的最小示例如下:

演示.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>

样式.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.style.zoom with document.body.zoom这当然不会被 Edge 解释。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

缩放内容以适合 UWP WebView 的相关文章

  • 如何获取正在访问 ASP.NET 应用程序的当前用户?

    为了获取系统中当前登录的用户 我使用以下代码 string opl System Security Principal WindowsIdentity GetCurrent Name ToString 我正在开发一个 ASP NET 应用程
  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • Android 证书已过期

    目前 我在签署我的应用程序时收到一条错误消息 指出证书已过期 不是调试证书 我知道这令人惊讶 因为 Android 证书应该可用很多年 我无法创建新证书 因为在 PlayStore 上更新我的 apk 时出现错误 apk 的证书必须与前一个
  • Excel SpillParent 和 SpillingToRange 难度

    我正在尝试使用 SpillParent and SpillingToRange在某些 UDF 中的 Excel 中的 Range 对象上 当该范围不在调用 UDF 的同一工作表上时 会出现意外行为 我知道如果我使用 溢出运算符 我不需要这样
  • `npm install` 在 node-gyp 重建上失败,并显示“gyp:未检测到 Xcode 或 CLT 版本!”

    每次我尝试npm install 我收到以下错误 我如何解决它 gyp No Xcode or CLT version detected I am on node v v8 8 0 npm v v6 11 3 我尝试在 VSCode 终端和
  • sbt - 对象 apache 不是包组织的成员

    我想使用 sbt 部署并提交 Spark 程序 但它抛出错误 Code package in goai spark import org apache spark SparkContext SparkConf object SparkMeA
  • Laravel 中添加路由名称前缀而不添加 URI 前缀

    我有两个命名空间 Front and Admin For Admin 名称空间 可以将所有路径添加为前缀admin conrtoller action 但对于 Front 我想要有前缀的路由名称而不带前缀 URI Route group a
  • Facebook API - 权限错误

    有人知道 Facebook API 错误的原因是什么吗 当用户通过 feed 调用发帖时 有时会出现这种情况 error message Permissions error type FacebookApiException code 20
  • 如何限制激励视频广告长度 (admob)?

    我的应用程序使用激励视频广告 但在我看来 有时广告太长 如何设置广告时长限制 这不是 AdMob 提供的功能 不过 感觉太长的广告通常会收到较少的点击次数 因此随着系统的调整 显示的频率会越来越低
  • Nhibernate 对 select 进行更新?

    我有以下课程 public class Product public virtual Guid Id get set public virtual string Name get set public virtual Decimal Pri
  • java.lang.IllegalStateException:保存状态失败:活动已清除片段中的索引

    首先 我的应用程序的结构如下 SpashActivity gt MainActivity gt switching between many fragments 我的应用程序使用幻灯片菜单 https github com jfeinste
  • 将 Numpy 数组“转换”为 Matlab,反之亦然

    我正在寻找一种将 NumPy 数组传递给 Matlab 的方法 我已经成功地通过使用将数组存储到图像中来做到这一点scipy misc imsave然后使用加载它imread 但这当然会导致矩阵包含 0 到 256 之间的值 而不是 真实
  • 向用户报告进度时如何编写最简洁的代码?

    在过去的几个月里 我一直在努力想出一些干净的代码来向用户报告进度 一切似乎总是归结为 ReportProgress Starting Task 1 doTask1 ReportProgress Task 1 is done ReportPr
  • WPF DataGrid 控件模板

    我正在尝试自定义 WPF 4 0 DataGrid 并需要其控件模板的列表 也是嵌套 DataGridColumnHeadersPresenter PART ColumnHeadersPresenter 的控件模板 我发现this http
  • php pdo 绑定参数不起作用[重复]

    这个问题在这里已经有答案了 我正在使用以下 php pdo 代码将数据插入 mysql 数据库 插入成功 但是 更新的数据库将字符串文字 a b 显示为各自字段中的值 怎么了 data array array a gt John b gt
  • 使用谷歌移动视觉 API 检测第一个条形码并将数据发送到另一个活动

    您好 我在 github 上检查了来自 google 的条形码阅读器示例 我试图让条形码检测器检测第一个条形码 只有一个 当它检测到时 它将解码的条形码发送到另一个活动 Mabye 我错了 但我需要输入这段代码 BarcodeGraphic
  • onConnectionFailed 给出 SIGN_IN_REQUIRED(4)

    我正在开发一个 Android 应用程序 我想在其中使用 Google API 为此我导入了谷歌播放服务库项目 我正在关注这个link https developers google com mobile android getting s
  • 将 string 转换为 unsigned int 返回错误的结果

    我有以下字符串 sThis 2154910440 unsigned int iStart atoi sThis c str 然而结果是 iStart 2147483647 有人看到我的错误吗 atoi将字符串转换为int 在您的系统上 in
  • 在 Windows 10 上的 WSL 终端中禁用蜂鸣声 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何在 Windows 10 上的 WSL 中禁用视觉和音频铃声 蜂鸣声 禁用蜂鸣声bash您需要取消注释 或添加 如果尚未存在 该行se
  • Safari:flexbox 和最小高度

    我需要一个带有 Flexbox 子项的滚动 Flexbox 容器 容器有一个 由 flexbox 定义的高度 子级应该和它们的内容一样高 这在 Safari 中效果很好 在 Safari 中 子级不会超出容器的高度 实际上 Safari 中
  • 是否可以在React应用程序中忽略fetch api的ssl验证?

    我在 React 单页应用程序中使用 fetch API 并且需要访问自签名的 https 微服务 由于 SSL 验证而失败 是否可以忽略验证 以及如何做呢 不 此错误来自您的浏览器 在 JavaScript 中无法避免 您必须将自签名证书
  • 缩放内容以适合 UWP WebView

    我正在尝试在 UWP 应用程序内的 XAML WebView 控件中实现缩放到内容适合功能 作为半官方的缩放解决方案 https code msdn microsoft com windowsapps How to zoom inout t