WebView:在启动javascript函数之前,等待输入字段存在
我有一个功能加载到一个网站上,一旦它的两个输入字段加载WebView:在启动javascript函数之前,等待输入字段存在,javascript,android,html,webview,Javascript,Android,Html,Webview,我有一个功能加载到一个网站上,一旦它的两个输入字段加载 function setCredentials(name, key){ document.getElementById('zoneIdent').value=name; document.getElementById('zonePwd').value=key; GInterface.traiterEvenementValidation(); } 它包含在项目*/assets/www/文件夹的*根目录下的auto
function setCredentials(name, key){
document.getElementById('zoneIdent').value=name;
document.getElementById('zonePwd').value=key;
GInterface.traiterEvenementValidation();
}
它包含在项目*/assets/www/文件夹的*根目录下的auto.html
中。(我尝试将其放入/res/assets/www/
文件夹中,但从AndroidStudio获得以下信息:Android资源打包:[QuickPronote]无效的资源目录名:C:\Users\Yann\DEV\workspace\QuickPronote\res/assets
我必须在此类网站上使用此功能:http://81.192.152.242:8001/mobile.eleve.html?FD=1
。请注意,网站加载速度不快
我正在使用以下代码:
myWebView.loadUrl(String.valueOf(url));
myWebView.loadUrl("javascript:setCredentials('" + name + "','" + key + "')");
其中url
、name
和key
是用户定义的字符串
我试过了,即使使用了伪文本,这两个字段都已完成,应该启动验证操作,但似乎要么函数加载得太快,要么根本没有启动,因为一旦网站完全加载,就不会有值出现,也不会有错误消息说凭据错误
如果您的解决方案包括使用外部插件ins/LIB(如JQuery),请告诉我
PS:不使用PhoneGap或任何东西。
首先,我从中获得了代码。首先,确保已在webview上启用javascript
webView.loadUrl(String.valueOf(url));
webView.getSettings().setJavaScriptEnabled(true);
然后添加一个侦听器,在页面完成后加载名称/键
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:setCredentials('" + name + "','" + key + "')");
}
});
编辑:
我想我发现了你的问题。页面中缺少javascript“setCredentials”方法:http://81.192.152.242:8001/mobile.professeur.html?FD=1
…您忘记添加了吗
当我将上面的onPageFinished
方法更改为:
myWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
myWebView.loadUrl("javascript:document.getElementById('zoneIdent').value='test name';");
}
});
“标识符”字段在该页面上填充有“测试名称”。首先,确保已在webview上启用javascript
webView.loadUrl(String.valueOf(url));
webView.getSettings().setJavaScriptEnabled(true);
然后添加一个侦听器,在页面完成后加载名称/键
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:setCredentials('" + name + "','" + key + "')");
}
});
编辑:
我想我发现了你的问题。页面中缺少javascript“setCredentials”方法:http://81.192.152.242:8001/mobile.professeur.html?FD=1
…您忘记添加了吗
当我将上面的onPageFinished
方法更改为:
myWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
myWebView.loadUrl("javascript:document.getElementById('zoneIdent').value='test name';");
}
});
“标识符”字段在该页上填充了“测试名称”。这不起作用。输入字段仍然为空。为了确认,请确保添加行webView.getSettings().setJavaScriptEnabled(true)
在函数中创建
函数,然后通过调用alert()首先检查javascript函数是否真的在执行
或Java代码中的某些内容。一旦成功,请尝试从文件中调用您自己的JS全局函数之一。这些只是基本的健全性测试,您可以执行这些测试,以了解设置是否已添加。这两个myWebView.setWebViewClient(new WebViewClient(){@Override public void on PageFinished(WebView视图,字符串url){super.onPageFinished(视图,url);view.loadUrl(“javascript:alert('来自java文件')”);view.loadUrl(“javascript:setCredentials('“+name+”,“+key+”)”);}};
在.java和alert('来自HTML文件');
在HTML文件中没有返回任何内容,尽管我的Webview工作并且JS被激活。但是,这不起作用。输入字段仍然为空。为了确认,请确保添加行Webview.getSettings().setJavaScriptEnabled(true)
在函数中创建
函数,然后通过调用alert()首先检查javascript函数是否真的在执行
或Java代码中的某些内容。一旦成功,请尝试从文件中调用您自己的JS全局函数之一。这些只是基本的健全性测试,您可以执行这些测试,以了解设置是否已添加。这两个myWebView.setWebViewClient(new WebViewClient(){@Override public void on PageFinished(WebView视图,字符串url){super.onPageFinished(视图,url);view.loadUrl(“javascript:alert('来自java文件')”);view.loadUrl(“javascript:setCredentials('“+name+”,“+key+”)”);}};
在.java和alert('来自HTML文件');
在HTML文件中没有返回任何内容,尽管我的Webview工作并且JS被激活
函数保存在某个JS文件中的本地作用域或模块中,则无法工作,因为您需要引用该模块才能调用其函数。如果它是全局函数,则肯定会被调用。同样在Android中,JS以对象形式接收通过Java代码传入JS函数的字符串参数。因此ust通过对收到的参数值使用console.log()检查函数是否正确调用。我注意到您使用了正确的引号语法将参数作为字符串传递,但检查setCredentials()的接收方式仍然很好
函数保存在某个JS文件中的本地作用域或模块中,则无法工作,因为您需要引用该模块才能调用其函数。如果它是全局函数,则肯定会被调用。同样在Android中,JS以对象形式接收通过Java代码传入JS函数的字符串参数。因此ust通过对收到的参数值使用console.log()检查是否正确调用了该函数。我注意到您在传递参数时使用了正确的引号语法