问题描述
解决方法
为您的 webview 实现 webviewclient 对象并像这样在 webview.EvaluateJavascript
中调用 OnPageFinished
..
//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);
}
}
}
然后在 webview
或 OnCreate
中的 buttonclick evet handler
代码中执行此操作
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());
}
,
我试过了,但没有用 =>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);
}
截图: