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系列其他推薦