WebView:在启动javascript函数之前等待输入字段存在

Car*_*man 0 html javascript android webview

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

function setCredentials(name, key){

    document.getElementById('zoneIdent').value=name;
    document.getElementById('zonePwd').value=key;
    GInterface.traiterEvenementValidation();

}
Run Code Online (Sandbox Code Playgroud)

它包含在文件夹中的a 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 + "')");
Run Code Online (Sandbox Code Playgroud)

其中url,namekey是该用户已定义的字符串.

我尝试了,即使使用虚拟文本,这两个字段也已完成并且应启动验证操作,但似乎函数加载过快,或者根本没有完成,因为一旦网站完全加载,没有值apearing或错误消息说凭证是错误的.

如果你的解决方案包括使用像JQuery这样的外部插件/库,请告诉我.

PS:不使用PhoneGap或其他任何东西. 这是我从一开始就得到代码的地方.

neb*_*lae 5

首先,确保您已在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 + "')");
        }
    });
Run Code Online (Sandbox Code Playgroud)

编辑:

我想我找到了你的问题.页面中缺少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';");
    }
});
Run Code Online (Sandbox Code Playgroud)

"标识符"字段在该页面上填充"测试名称".