| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
This repo has the experimental .NET MAUI HybridWebView control, which enables hosting arbitrary HTML/JS/CSS content in a WebView and enables communication between the code in the WebView (JavaScript) and the code that hosts the WebView (C#/.NET). For example, if you have an existing React JS application, you could host it in a cross-platform .NET MAUI native application, and build the back-end of the application using C# and .NET.
Example usage of the control:
<hwv:HybridWebView
HybridAssetRoot="hybrid_root"
MainFile="hybrid_app.html"
RawMessageReceived="OnHybridWebViewRawMessageReceived" />And here's how .NET code can call a JavaScript method:
var sum = await myHybridWebView.InvokeJsMethodAsync<int>("JsAddNumbers", 123, 456);And the reverse, JavaScript code calling a .NET method:
HybridWebView.SendInvokeMessageToDotNet("CallMeFromScript", ["msg from js", 987]);In addition to method invocation, sending "raw" messages is also supported.
Projects in this repo:
See the main discussion topic here: dotnet/maui#12009
Or please log an issue in this repo for any other topics.
To get started, you'll need a .NET MAUI 7 project, then add the HybridWebView control, and add some web content to it.
Note: If you'd like to check out an already completed sample, go to https://github.com/Eilon/SampleMauiHybridWebViewProject
private async void OnHybridWebViewRawMessageReceived(object sender, HybridWebView.HybridWebViewRawMessageReceivedEventArgs e)
{
await Dispatcher.DispatchAsync(async () =>
{
await DisplayAlert("JavaScript message", e.Message, "OK");
});
}<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<script src="_hwv/HybridWebView.js"></script>
<script src="myapp.js"></script>
</head>
<body>
<div>
Your message: <input type="text" id="messageInput" />
</div>
<div>
<button onclick="SendMessageToCSharp()">Send to C#!</button>
</div>
</body>
</html>function SendMessageToCSharp() {
var message = document.getElementById('messageInput').value;
HybridWebView.SendRawMessageToDotNet(message);
}To run this app you need to have Visual Studio for Windows or Mac, including the .NET MAUI workload. Then clone this repo, open the solution, and run one of the sample projects.
The MauiReactJSHybridApp sample contains portions of a pre-existing Todo App built using React JS.
The original React JS Todo app sample used here is based on this sample: https://github.com/mdn/todo-react. I created a fork at https://github.com/Eilon/todo-react that incorporates some small changes to call the .NET API from JavaScript to synchronize the Todo list between the two parts of the app.
To make changes to the fork and update the .NET MAUI app, here's what I do:
This project is licensed under the MIT License. However, portions of the incorporated source code may be subject to other licenses:
| Back | FazBrowse Home | New Git URL |