Fork me on GitHub

Xamarin开发笔记—WebView双项事件调用

1.Xamarin调用WebView:

原理:Xamarin.Forms WebView内置方法xx.Eval(..)可以调用到页面里面的js函数。

WebView展示的代码如下:

复制代码
var htmlSource = new HtmlWebViewSource();
htmlSource.Html = @"<html>
                <head>
                    <meta charset='UTF-8'>
                    <title></title>
                    <script>
                        function showMsg(msg){
                            alert('hello '+msg);
                        }
                    </script>
                </head>
                <body>
                    你好世界.
                </body>
                </html>";
this.webview.Source = htmlSource;
复制代码

调用核心代码:

this.wv.Eval("showMsg('王磊')");

效果如下:

 

 

2.WebView调用Xamarin:

原理:WebView通过Navigating改变事件拦截,进行业务处理。

流程:WebView添加Navigating事件 => 修改html代码里面的href为自定义的格式和协议 => 在Navigating事件里面判断拦截处理。

html核心代码:

1
2
3
<WebView ... Navigating="wv_Navigating"  ></WebView>
 
<a href='xaml:{id:xxx}'>xxx</a>

后台核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/// <summary>
/// WebView链接改变事件(点击href时触发)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void wv_Navigating(object sender, WebNavigatingEventArgs e)
{
    string identify = "xaml:"; //自定义协议关键字
    string url = e.Url; //href信息
    if (url.Contains(identify)) //是自定义的xaml:协议,执行事件
    {
    e.Cancel = true;
        JObject jb = JObject.Parse(url.Substring(identify.Length));
        Debug.WriteLine("获取data:" + jb.ToString());
        //todo:业务逻辑
    }
}

  

Xamarin系列其他推荐 


 

posted @   磊哥|www.javacn.site  阅读(3314)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 易语言 —— 开山篇
· 实操Deepseek接入个人知识库
· Trae初体验
历史上的今天:
2016-06-07 ASP.NET MVC 5调用其他Action
点击右上角即可分享
微信分享提示