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核心代码:

<WebView ... Navigating="wv_Navigating"  ></WebView>

<a href='xaml:{id:xxx}'>xxx</a>

后台核心代码:

/// <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:业务逻辑
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GuZhenYin

ASP.NET Core文件上传与下载(多种上传方式)

前言 前段时间项目上线,实在太忙,最近终于开始可以研究研究ASP.NET Core了. 打算写个系列,但是还没想好目录,今天先来一篇,后面在整理吧. ASP.N...

6036
来自专栏蘑菇先生的技术笔记

Net作业调度(五)—quartz.net动态添加job设计

3036
来自专栏我和未来有约会

Silverlight本地化

ilverlight本地化 简单的实现多语言版本的Silverlight应用。 日益国际化的同时,需要我们开发的应用根据不同的来访者显示不用的语言,Silv...

20010
来自专栏LanceToBigData

HttpClient(二)HttpClient使用Ip代理与处理连接超时

前言   其实前面写的那一点点东西都是轻轻点水,其实HttpClient还有很多强大的功能:   (1)实现了所有 HTTP 的方法(GET,POST,PUT,...

4058
来自专栏一只程序汪的自我修养

手把手教你用.NET Core写爬虫

1792
来自专栏walterlv - 吕毅的博客

如何根据一个绝对文件路径生成一个相对文件路径

发布于 2018-06-07 11:30 更新于 2018-09...

801
来自专栏葡萄城控件技术团队

异步陷阱之死锁篇

提倡异步编程旨在给用户更好的前端体验,但异步编程也让学习成本和犯错几率大大升高,其中最常见且最难处理的就是死锁。 何谓“死锁”,英文术语称“Deadlock”,...

2999
来自专栏恰童鞋骚年

.NET Core微服务之基于MassTransit实现数据最终一致性(Part 2)

  在上一篇中,我们了解了MassTransit这个开源组件的基本用法,这一篇我们结合一个小案例来了解在ASP.NET Core中如何借助MassTransit...

1514
来自专栏me的随笔

ASP.NET MVC5请求管道和生命周期

请求管道是一些用于处理HTTP请求的模块组合,在ASP.NET中,请求管道有两个核心组件:IHttpModule和IHttpHandler。所有的HTTP请求都...

1413
来自专栏葡萄城控件技术团队

Silverlight DataGrid使用WCF RIA Service实现Load-on-demand的数据加载

在Windows或者ASP.NET Web应用程序中,我们经常可以看到在Grid控件上通过Load-on-demand的方式来提高系统性能,提升用户体验。 所谓...

2045

扫码关注云+社区

领取腾讯云代金券