首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用WebView无头配合Xamarin

如何使用WebView无头配合Xamarin
EN

Stack Overflow用户
提问于 2019-08-14 03:42:17
回答 1查看 335关注 0票数 0

我想运行一些javascript,即使活动是不可见的。我无法在活动上创建WebView,因为活动可能被销毁,WebView垃圾被收集,所以我考虑创建一个没有附加到某个活动的无头WebView。

我试过这个:

代码语言:javascript
复制
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。我不知道怎么让它跑?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-14 06:38:13

在android系统中,webview默认情况下将阻止JS事件。因此,您可以使用自定义渲染器来启用它。

在你的Android项目中

代码语言:javascript
复制
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;

            }

        }

    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57487892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档