c# - c# WebView2 ==> 如何从 WebView2 窗口中获取选定的文本
问题描述
我如何能
动态文档 = webView1.Document.DomDocument; 动态选择 = document.selection; 字符串文本 = selection.createRange().text; 返回文本;
在 webBrowser 中工作。
我需要在 WebView 浏览器中突出显示文本并将其返回。
先感谢您。
解决方案
从您的主机代码 (C#) 中,您可以调用webView2.CoreWebView2.PostWebMessageAsJson()将任意 JSON 编码的 Javascript 对象传递给浏览器环境中的 Javascript。
也许这样的事情可以告诉你的浏览器Javascript从你的剪贴板中获取文本。
webView2.CoreWebView2.PostWebMessageAsJson(
"\"verb\":\"getclipboard\",\"format\":\"text\"}")
webView2.CoreWebView2.WebMessageReceived += MessageHandler;
private void MessageHandler
(object s, CoreWebView2WebMessageReceivedEventArgs e) {
var clipboardText = e.TryGetMessageAsString();
}
在您的浏览器 Javascript 中,您可以执行
window.chrome.webview.addEventListener('message', function (event) {
const payload = event.data
if (payload.verb === 'getclipboard') {
/* do what you need to do with your clipboard */
const clipboardText = 'whatever'
windows.chrome.webview.postMessage(clipboardText);
} )
该 postMessage 将向您的主机 MessageHandler 传递一个事件。
推荐阅读
- java - 如何在 Spring JAVA(JPA/Hibernate)中映射 MySQL 时间戳字段
- azure - 如何通过服务总线消息触发 Azure 函数并将消息输出到单个 Azure 函数中的服务总线
- python - InvalidSchema("No connection adapters were found for {!r}".format(url)) 在使用 ConfigParser 解析的请求模块上的 URL 时
- android - 如何在 xml 中设置 RecyclerView 的最大高度?
- ios - 如何在 Swift 中舍入 UITextField 的 topRight 和 bottomLeft 角
- oracle - 发生触发错误的位置 -oracle mutating error
- c# - 从 c# 中的动态数据类型转换为 .net 对象
- shell - 使用带有 gfind 的 GNU 并行命令来获得 gupdatedb 工具的运行时间
- docker - 是否可以从实时服务器下载工作图像并将其作为本地运行?
- sql - H2 数据库:在 CTE 中使用窗口函数时出错