Javascript 通过Android访问HTML元素值(Webview)
无法通过Android访问HTML元素值(Webview) 上下文:-我们正在开发的Monoandroid应用程序在其中一个布局中有一个Webview组件。我们正在加载/重用我们现有的(注册页面)HTML/JavaScript:具有单选按钮(男性/女性RDBTN)。 但无法访问“提交”按钮(网络视图外部)单击事件上的选定radioButton值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#中(未成功) 问题的假设: 没有克鲁
请推荐一些通过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());