0

一旦加载了两个输入字段,我就有一个在网站上加载的功能。

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和是用户定义的字符串namekey

我试过了,即使使用虚拟文本,两个字段也已完成,应该启动验证操作,但似乎该功能加载得太快,或者根本没有启动,因为一旦网站完全加载,既没有值出现,也没有错误消息表明凭据错误。

如果您的解决方案包括使用 JQuery 等外部插件/库,请告诉我。

PS:不使用PhoneGap或任何东西。 这是我首先从这里获得代码的地方。

4

1 回答 1

6

首先,确保你在 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';");
    }
});

“标识符”字段在该页面上填充了“测试名称”。

于 2013-09-17T18:29:16.407 回答