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()检查是否正确调用了该函数。我注意到您在传递参数时使用了正确的引号语法