如何在 webview 中显示来自 xamarin android 按钮的警报功能
How to display alert function from xamarin android button in webview
- 如何在 webview 中显示来自 xamarin android 按钮的警报功能
- 我想在用户单击 Xamarin android 按钮时在 webview 中添加警报。
为您的 webview 实现 webviewclient 对象并像这样在 OnPageFinished
中调用 webview.EvaluateJavascript
..
//create an internal webviewclient class
internal class webViewClient : WebViewClient
{
public override void OnPageStarted(WebView view, string url, Bitmap favicon)
{
base.OnPageStarted(view, url, favicon);
}
public override void OnPageFinished(WebView view, string url)
{
base.OnPageFinished(view, url);
//define the javascript code you wish to run
string script = "javascript:alert('Hi');";
//perform check and then call
if (Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Kitkat)
{
view.EvaluateJavascript(script, null);
}
else
{
view.LoadUrl(script);
}
}
}
然后在 OnCreate
或 buttonclick evet handler
中的 webview
代码中执行此操作
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.webview);
mywebview = FindViewById<WebView>(Resource.Id.mywebiview);
//This webviewchromeclient is very important
mywebview.SetWebChromeClient(new WebChromeClient());
WebSettings webSettings = mywebview.Settings;
//set javascript enabled for your webview
webSettings.JavaScriptEnabled = true;
webSettings.JavaScriptCanOpenWindowsAutomatically = true;
//set the object we defined above as the webviewclient for your webview
mywebview.SetWebViewClient(new webViewClient());
}
I have try this but not work =>webView.EvaluateJavascript("javascript: alert('Hi');", null);
您可以通过webview1.SetWebChromeClient(new WebChromeClient());
尝试使用WebChromeClient()
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
webview1 = FindViewById<WebView>(Resource.Id.webView1);
button1 = FindViewById<Button>(Resource.Id.button1);
button1.Click += Button1_Click;
WebSettings settings = webview1.Settings;
settings.JavaScriptEnabled = true;
webview1.SetWebChromeClient(new WebChromeClient());
webview1.LoadUrl("file:///android_asset/login.html");
}
private void Button1_Click(object sender, System.EventArgs e)
{
//webview1.EvaluateJavascript("javascript: check();", new EvaluateBack());
webview1.EvaluateJavascript("javascript: alert('Hi');", null);
}
截图:
- 如何在 webview 中显示来自 xamarin android 按钮的警报功能
- 我想在用户单击 Xamarin android 按钮时在 webview 中添加警报。
OnPageFinished
中调用 webview.EvaluateJavascript
..
//create an internal webviewclient class
internal class webViewClient : WebViewClient
{
public override void OnPageStarted(WebView view, string url, Bitmap favicon)
{
base.OnPageStarted(view, url, favicon);
}
public override void OnPageFinished(WebView view, string url)
{
base.OnPageFinished(view, url);
//define the javascript code you wish to run
string script = "javascript:alert('Hi');";
//perform check and then call
if (Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Kitkat)
{
view.EvaluateJavascript(script, null);
}
else
{
view.LoadUrl(script);
}
}
}
然后在 OnCreate
或 buttonclick evet handler
中的 webview
代码中执行此操作
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.webview);
mywebview = FindViewById<WebView>(Resource.Id.mywebiview);
//This webviewchromeclient is very important
mywebview.SetWebChromeClient(new WebChromeClient());
WebSettings webSettings = mywebview.Settings;
//set javascript enabled for your webview
webSettings.JavaScriptEnabled = true;
webSettings.JavaScriptCanOpenWindowsAutomatically = true;
//set the object we defined above as the webviewclient for your webview
mywebview.SetWebViewClient(new webViewClient());
}
I have try this but not work =>webView.EvaluateJavascript("javascript: alert('Hi');", null);
您可以通过webview1.SetWebChromeClient(new WebChromeClient());
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
webview1 = FindViewById<WebView>(Resource.Id.webView1);
button1 = FindViewById<Button>(Resource.Id.button1);
button1.Click += Button1_Click;
WebSettings settings = webview1.Settings;
settings.JavaScriptEnabled = true;
webview1.SetWebChromeClient(new WebChromeClient());
webview1.LoadUrl("file:///android_asset/login.html");
}
private void Button1_Click(object sender, System.EventArgs e)
{
//webview1.EvaluateJavascript("javascript: check();", new EvaluateBack());
webview1.EvaluateJavascript("javascript: alert('Hi');", null);
}
截图: