如何解决window.close()在Android webview中不起作用c#

时间:2016-10-27 06:21:40

标签: javascript c# android webview

我刚刚使用这个视觉工作室c#android ...

在vb.net中进行系统开发...在网站上工作正常...使用移动应用程序时需要的问题...使用此vs c#xamarin android ....

protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle);

    SetContentView(Resource.Layout.Main);

    WebView localWebView = FindViewById<WebView>(Resource.Id.LocalWebView);
    localWebView.SetWebViewClient(new WebViewClient()); // stops request going to Web Browser
    localWebView.Settings.JavaScriptEnabled = true;
    localWebView.Settings.JavaScriptCanOpenWindowsAutomatically = true;
    localWebView.SetWebChromeClient(new WebChromeClient());
    localWebView.LoadUrl("http://www.facebook.com");

}

成功运行在这个webview ....但有窗体有window.open ....问题是如何window.close使用javascript打开它..意味着回到我以前的窗口..并传递一些信息....像:window.opener.document.getElementById(StrCtrlName2).value = MemberCode;

找到并想尝试这个代码......但是对于c#看起来不一样...如何在visual studio c#中转换它因为有错误?...帮助我..在哪里惩罚我也不确定......只是学习c#

WebChromeClient webClient = new WebChromeClient(){

    public void onCloseWindow(Window w){
        super.onCloseWindow(w);
        Log.d(TAG, "Window close");
    }
};

感谢...

1 个答案:

答案 0 :(得分:0)

欢迎@haris!

您找到的代码是java。它与c#不同,但也有很多相似之处。

如果你想在c#中使用这个特定的java片段,你可以写下这样的东西:

    using Android.Webkit;
    public class CustomWebChromeClient : WebChromeClient { 

        public override void OnCloseWindow(Android.Webkit.WebView window)
        {
            base.OnCloseWindow(window);
            //Your favorite logging library call.
        }

    }

快速解释(如果您感兴趣的话)。

在java片段中,创建了一个扩展WebChromeClient的匿名类的引用,然后通过添加附加日志记录扩展了基于onCloseWindow的方法。

在c#中我不能这样做,只是创建了一个命名类CustomWebChromeClient,它扩展了WebChromeClient并覆盖了OnCloseWindow

有关详细信息,请参阅官方Xamarin docs