Xamarin開發筆記—WebView雙項事件呼叫

王磊的部落格發表於2017-06-07

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:業務邏輯
    }
}

  

Xamarin系列其他推薦 


 

相關文章