Javascript 检测android webview中的html按钮单击
因此,在我的Android应用程序中,我打开了一个由表单和按钮(提交)组成的webview。按钮元素如下所示:Javascript 检测android webview中的html按钮单击,javascript,android,html,webview,android-webview,Javascript,Android,Html,Webview,Android Webview,因此,在我的Android应用程序中,我打开了一个由表单和按钮(提交)组成的webview。按钮元素如下所示: { ... myWebview.getSettings().setJavaScriptEnabled(true); myWebview.getSettings().setDomStorageEnabled(true); myWebview.addJavascriptInterface(new MyJavaScriptInterface(this), "ButtonCheck");
{
...
myWebview.getSettings().setJavaScriptEnabled(true);
myWebview.getSettings().setDomStorageEnabled(true);
myWebview.addJavascriptInterface(new MyJavaScriptInterface(this), "ButtonCheck");
myWebview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
loadMyEvent(clickListener());
}
private void loadMyEvent(String javascript){
myWebview.loadUrl("javascript:"+javascript);
}
private String clickListener(){
return getMyButtons()+ "for(var i = 0; i < buttons.length; i++){\n" +
"\tbuttons[i].onclick = function(){ console.log('click worked.'); ButtonCheck.boundMethod('button clicked'); };\n" +
"}";
}
private String getMyButtons(){
return "var buttons = document.getElementsByClassName('your-button-class'); console.log(buttons.length + ' buttons');\n";
}
});
myWebview.loadUrl("http://....");
...
}
class MyJavaScriptInterface {
private Context context;
MyJavaScriptInterface(Context ctx) {
context = ctx;
}
@JavascriptInterface
public void boundMethod(String html) {
//Check internet connection
}
}
保存
您必须使用如下javascript界面:
{
...
myWebview.getSettings().setJavaScriptEnabled(true);
myWebview.getSettings().setDomStorageEnabled(true);
myWebview.addJavascriptInterface(new MyJavaScriptInterface(this), "ButtonCheck");
myWebview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
loadMyEvent(clickListener());
}
private void loadMyEvent(String javascript){
myWebview.loadUrl("javascript:"+javascript);
}
private String clickListener(){
return getMyButtons()+ "for(var i = 0; i < buttons.length; i++){\n" +
"\tbuttons[i].onclick = function(){ console.log('click worked.'); ButtonCheck.boundMethod('button clicked'); };\n" +
"}";
}
private String getMyButtons(){
return "var buttons = document.getElementsByClassName('your-button-class'); console.log(buttons.length + ' buttons');\n";
}
});
myWebview.loadUrl("http://....");
...
}
class MyJavaScriptInterface {
private Context context;
MyJavaScriptInterface(Context ctx) {
context = ctx;
}
@JavascriptInterface
public void boundMethod(String html) {
//Check internet connection
}
}
{
...
myWebview.getSettings().setJavaScriptEnabled(true);
myWebview.getSettings().setDomStorageEnabled(true);
addJavascriptInterface(新的MyJavaScriptInterface(this),“ButtonCheck”);
myWebview.setWebViewClient(新的WebViewClient(){
@凌驾
公共void onPageFinished(WebView视图,字符串url){
loadMyEvent(clickListener());
}
私有void loadMyEvent(字符串javascript){
loadUrl(“javascript:+javascript”);
}
私有字符串clickListener(){
返回(var i=0;i