Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过Android访问HTML元素值(Webview)_Javascript_Html_Xamarin.android - Fatal编程技术网

Javascript 通过Android访问HTML元素值(Webview)

Javascript 通过Android访问HTML元素值(Webview),javascript,html,xamarin.android,Javascript,Html,Xamarin.android,无法通过Android访问HTML元素值(Webview) 上下文:-我们正在开发的Monoandroid应用程序在其中一个布局中有一个Webview组件。我们正在加载/重用我们现有的(注册页面)HTML/JavaScript:具有单选按钮(男性/女性RDBTN)。 但无法访问“提交”按钮(网络视图外部)单击事件上的选定radioButton值 已尝试将JavaScriptInterface用于WebView,但不可用 通过JNI获得Java类的值,在我的C#中(未成功) 问题的假设: 没有克鲁

无法通过Android访问HTML元素值(Webview)

上下文:-我们正在开发的Monoandroid应用程序在其中一个布局中有一个Webview组件。我们正在加载/重用我们现有的(注册页面)HTML/JavaScript:具有单选按钮(男性/女性RDBTN)。 但无法访问“提交”按钮(网络视图外部)单击事件上的选定radioButton值

  • 已尝试将JavaScriptInterface用于WebView,但不可用
  • 通过JNI获得Java类的值,在我的C#中(未成功)
  • 问题的假设: 没有克鲁

    问题:

    如何获取mono事件代码的值?
    请推荐一些通过MONODROID访问webview外部HTML元素值的替代方法?

    您应该捕获网站在webview内部发送的所有请求,如提交您感兴趣的数据。因此,您应该向WebView添加WebViewClient并实现

    public bool ShouldOverrideUrlLoading (WebView view, string url)
    
    下面是一个示例,我使用它来获取当前(在webview中)在webview中选择的地图功能的id,以显示用户通过在地图上单击此对象请求的相应详细信息。 JavaScript代码只是调用函数的href:

    "<a href=\"javascript:getDetailsForSelectedStation();\">Details...</a>";
    
    (您也可以直接将href设置为我们的“假”-url) 它应该像一个普通的地址一样开始,所以我使用了www,然后我使用了P来标记C#中的字符串。结束标记“DETAILANFRAGE”将用于捕获C#中的此调用

    现在,这是接收消息的WebViewClient:

    class MyWebViewClient : WebViewClient
    {
            public override bool ShouldOverrideUrlLoading (WebView view, string url)
            {
                //check, whether this was a details-url
                if (url.EndsWith ("DETAILANFRAGE")) {
                    //tokenize the url
                    string[] tokens = url.Split ('P');
                    long saeulenid;
                    if (long.TryParse (tokens [1], out  saeulenid)) {
                        //Here you can work with the data retrieved from the webview
                        ShowDetailsByID(saeulenid);
                        ...
                    }
                }
                return true;
            }
    }
    
    必须将WebViewClient添加到WebView:

    MyWebView.SetWebViewClient(new MyWebViewClient());
    
    如果需要更多上下文信息,也应该重写构造函数。我正在移交当前活动,以便能够启动一个新活动(StartActivity()),在我的应用程序中显示详细信息视图。 顺便说一下,要从C#调用JavaScript代码,只需加载如下url: LoadUrl(“javascript:myFunction(myParams)”; WebChromeClient对于调试非常有用


    当然,您可能会在

    @中找到有趣的信息,Roid是对您有用的答案,或者您最终是如何解决的?一些反馈会很好。
    MyWebView.SetWebViewClient(new MyWebViewClient());