首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin.Forms.WebView -获取显示页面的标题?

Xamarin.Forms.WebView -获取显示页面的标题?
EN

Stack Overflow用户
提问于 2015-08-30 21:42:39
回答 2查看 3K关注 0票数 2

是否可以在WebView中显示的网页上获取信息?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-31 15:37:07

使用WebView自定义呈现器(https://developer.xamarin.com/guides/cross-platform/xamarin-forms/custom-renderer/):

代码语言:javascript
复制
public class TitleWebView : Xamarin.Forms.WebView
{
    public static readonly BindableProperty PageTitleProperty = BindableProperty.Create<TitleWebView, string>(v => v.PageTitle, null, BindingMode.OneWayToSource);

    public string PageTitle
    {
        get { return (string)GetValue(PageTitleProperty); }
        set { SetValue (PageTitleProperty, value); } 
    }
}

Android渲染器:

代码语言:javascript
复制
public class TitleWebViewRenderer : WebViewRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
    {
        base.OnElementChanged(e);

        if (e.OldElement == null)
        {
            Control.SetWebViewClient(new TitleWebViewClient(this));
        }
    }

    internal class TitleWebViewClient : WebViewClient
    {
        readonly TitleWebViewRenderer titleWebViewRenderer;

        internal TitleWebViewClient(TitleWebViewRenderer titleWebViewRenderer)
        {
            this.titleWebViewRenderer = titleWebViewRenderer;
        }

        public override void OnPageFinished(Android.Webkit.WebView view, string url)
        {
            base.OnPageFinished(view, url);
            ((IElementController) titleWebViewRenderer.Element).SetValueFromRenderer(TitleWebView.PageTitleProperty, view.Title);
        }
    }

iOS渲染器:

代码语言:javascript
复制
public class TitleWebViewRenderer : WebViewRenderer
{
    public TitleWebViewRenderer()
    {
        this.LoadFinished += (object sender, EventArgs e) => {
            var titleWebView = (TitleWebView)Element;
            ((IElementController)Element).SetValueFromRenderer(TitleWebView.PageTitleProperty, 
                EvaluateJavascript("document.title"));
        };
    }
}
票数 4
EN

Stack Overflow用户

发布于 2019-08-28 13:59:44

Daniel LuberdaTitleWebView类解决方案修正了Xamarin 4.2:

代码语言:javascript
复制
    public class TitleWebView : WebView
    {
        public static readonly BindableProperty PageTitleProperty = BindableProperty.Create(
            propertyName: "PageTitle",
            defaultValue: string.Empty,
            returnType: typeof(string),
            declaringType: typeof(string),
            defaultBindingMode: BindingMode.OneWayToSource);

        public string PageTitle
        {
            get => (string) GetValue(PageTitleProperty);
            set => SetValue(PageTitleProperty, value);
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32301438

复制
相关文章

相似问题

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