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

时间:2013-09-10 14:14:44

标签: javascript android html webview

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

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 + "')");

其中urlnamekey是用户定义的字符串。

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

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

PS:不使用PhoneGap或其他任何东西。 Here's where我从一开始就得到了我的代码。

1 个答案:

答案 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';");
    }
});

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