使用 WebView2

问题描述

我想构建一个针对单个网站的混合应用。该应用程序将允许通过将 java 脚本注入网页来自动化某些任务。我对网页的开发没有任何影响。

自动化步骤中,我需要将文件(例如 Word docx、Outlook msg 或 PDF)上传到网页。例如,在我的 Chrome 扩展程序中,我将文件转换为 base64 并将其作为字符串(部分)发送到页面。在页面上,我有一些将 Base64 转换为 blob 的 java 脚本。这样的方法不是我对 WebView2 的首选,但是 PostWebMessageAsString 可以处理大小为几 MB 的 Base64 字符串吗?它可以处理的最大尺寸是多少?

我还能如何从本地系统获取文件到网页中?有没有办法甚至使用本地文件系统路径?或者是否有可能(我相信 CEFSharp 有这个)设置自定义架构(SchemeHandler)来添加资源?

另外,我想在网页中添加一个 JS 文件,其中包含我以后打算调用的许多功能。这可能与我上面的问题类似,但是如何上传文件?或者我可以在 SCRIPT 标签添加对带有本地文件系统路径的 JS 文件的引用吗?

解决方法

不确定这是否是最好的方法,但由于这个问题的答案与我刚刚回答的上一个问题的过程大致相同,我想请您注意该答案:

Hide or modify the toolbar of Webview2 when viewing pdf

这解决了问题的“运行 Javascript”部分。

至于“PostWebMessageAsString”是的,它应该能够处理常规字符串的最大大小。

我没有在任何地方读到调用有任何限制,到目前为止我已经将一些大对象集合 C# 端序列化为 json,并使用 postmessage 调用毫无困难地发送它们。

您确实需要在 webview2 会话中运行一些 JS 代码来拦截 post 消息事件,最好的方法是使用我在其他答案中概述的方法在之前将一些 JS 代码插入到您的 webview 中运行/加载页面。