我想运行一些javascript,即使活动是不可见的。我无法在活动上创建WebView,因为活动可能被销毁,WebView垃圾被收集,所以我考虑创建一个没有附加到某个活动的无头WebView。
我试过这个:
webworker = new Xamarin.Forms.WebView();
Xamarin.Forms.HtmlWebViewSource html = new Xamarin.Forms.HtmlWebViewSource();
html.Html = "<!DOCTYPE html>\r\n"+
"<html><head><script type=\"text/javascript\">\r\n"+
"function timer(){\r\n"+
" window.setTimeout(function(){\r\n"+
" console.log(\"webworker is alive\");\r\n"+
" timer();\r\n"+
"}, 1000);\r\n"+
"}\r\n"+
"timer();\r\n" +
"</script>\r\n"+
"</head></html>";
webworker.Source = html;
webworker.Eval("timer();");但它不执行javascript。我不知道怎么让它跑?
发布于 2019-08-14 06:38:13
在android系统中,webview默认情况下将阻止JS事件。因此,您可以使用自定义渲染器来启用它。
在你的Android项目中
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Webkit;
using Android.Widget;
using xxx;
using xxx.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly: ExportRenderer(typeof(Xamarin.Forms.WebView), typeof(MyWebViewRenderer))]
namespace xxx.Droid
{
public class MyWebViewRenderer:WebViewRenderer
{
public MyWebViewRenderer(Context context):base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
{
base.OnElementChanged(e);
if(Control!=null)
{
Android.Webkit.WebView webview =(Android.Webkit.WebView) Control;
WebSettings settings = webview.Settings;
settings.JavaScriptEnabled = true;
}
}
}
}https://stackoverflow.com/questions/57487892
复制相似问题