如何在 Xamarin.Forms 的 webview 中设置用户代理

发布于 2025-01-16 01:13:06 字数 1176 浏览 4 评论 0原文

我的程序中使用的页面之一需要 UA 包含字符串“weishao”,我尝试使用下面的 JavaScript 来更改 UA 但它不起作用。

var customUserAgent = 'Mozilla/5.0 (Linux; Android 10; EBG-AN00 Build/HUAWEIEBG-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36 weishao(3.2.2.74616)';
            Object.defineProperty(navigator, 'userAgent', {
              value: customUserAgent,
              writable: false
            });

页面的检测器是:

function is_weixin() {
    var href = window.location.href;
    if (href.indexOf("errorPage") != -1){
        return true;
    }
    var ua = navigator.userAgent.toLowerCase();
    var isWeixin = ua.indexOf('micromessenger') != -1;
    var weishao = ua.indexOf('weishao') != -1;
    if (isWeixin){
        return true;
    }else if( weishao) {
        return true;
    }else if(dd.env.platform != "notInDingTalk") {
        return true;
    }else{
        alert("Not allowed!");
        var openid = $("#openid").val();
        if (dkywcommon.isEmpty(openid)) {
            openid = "";
        }
        window.location.href = "/errorPage?openid="+openid;
        return true;
    }
}

One of the pages used in my Program needs the UA contains the string "weishao", I have tried to use javascript below to change the UA but it is not working.

var customUserAgent = 'Mozilla/5.0 (Linux; Android 10; EBG-AN00 Build/HUAWEIEBG-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36 weishao(3.2.2.74616)';
            Object.defineProperty(navigator, 'userAgent', {
              value: customUserAgent,
              writable: false
            });

The detector of the page is:

function is_weixin() {
    var href = window.location.href;
    if (href.indexOf("errorPage") != -1){
        return true;
    }
    var ua = navigator.userAgent.toLowerCase();
    var isWeixin = ua.indexOf('micromessenger') != -1;
    var weishao = ua.indexOf('weishao') != -1;
    if (isWeixin){
        return true;
    }else if( weishao) {
        return true;
    }else if(dd.env.platform != "notInDingTalk") {
        return true;
    }else{
        alert("Not allowed!");
        var openid = $("#openid").val();
        if (dkywcommon.isEmpty(openid)) {
            openid = "";
        }
        window.location.href = "/errorPage?openid="+openid;
        return true;
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黑凤梨 2025-01-23 01:13:06

xamarin 目前不支持在 webview 上自定义 user-agent,但如果您只是在寻找 xamarin.android 的解决方法,您可以参考下面的代码。

[assembly: ExportRenderer(typeof(WebView), typeof(CustomWebViewRenderer))]
namespace App2.Droid
{
    public class CustomWebViewRenderer : WebViewRenderer
    {
        private readonly Context _context;

        public CustomWebViewRenderer(Context context) : base(context)
        {
            _context = context;
        }

        protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
        {
            base.OnElementChanged(e);

            if (e.NewElement != null)
            {
                Control.SetWebViewClient(GetWebViewClient());
                Control.Settings.UserAgentString = "Custom user agent!";
            }
        }
    }
}

请参阅

https://github.com/xamarin/Xamarin.Forms/issues/8432< /a> .

Customizing user-agent on webview is not supported currently in xamarin, but if you're just looking for the workaround for xamarin.android , you can refer to the code below .

[assembly: ExportRenderer(typeof(WebView), typeof(CustomWebViewRenderer))]
namespace App2.Droid
{
    public class CustomWebViewRenderer : WebViewRenderer
    {
        private readonly Context _context;

        public CustomWebViewRenderer(Context context) : base(context)
        {
            _context = context;
        }

        protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
        {
            base.OnElementChanged(e);

            if (e.NewElement != null)
            {
                Control.SetWebViewClient(GetWebViewClient());
                Control.Settings.UserAgentString = "Custom user agent!";
            }
        }
    }
}

Refer to

https://github.com/xamarin/Xamarin.Forms/issues/8432 .

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文