我有一个功能,一旦加载了两个输入字段就加载到网站上。
function setCredentials(name, key){
document.getElementById('zoneIdent').value=name;
document.getElementById('zonePwd').value=key;
GInterface.traiterEvenementValidation();
}
它包含在auto.html
文件夹中的*root of project*/assets/www/
中。 (我尝试将其放在/res/assets/www/
文件夹中,但我从AndroidStudio获得以下内容:Android Resource Packaging: [QuickPronote] invalid resource directory name: 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
是用户定义的字符串。
我试过了,即使是使用虚拟文本,这两个字段已经完成并且应该启动验证操作但似乎函数加载太快,或者它根本没有被激活,因为曾经的网站完全加载,没有值apearing或错误消息说凭证是错误的。
如果你的解决方案包括使用像JQuery这样的外部插件/库,请告诉我。
PS:不使用PhoneGap或其他任何东西。 Here's where我从一开始就得到了我的代码。
答案 0 :(得分:5)
首先,确保您已在网页视图中启用了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';");
}
});
“标识符”字段在该页面上填充“测试名称”。