Android WebView找不到JavaScript函数

Android WebView找不到JavaScript函数,javascript,android,webview,Javascript,Android,Webview,我正在尝试从android activity调用JS函数,它在webview中加载页面,但找不到JS函数,该函数在桌面浏览器中运行得非常好 以下是JAVA代码 为JS设置几乎所有的内容 index = (WebView) findViewById(R.id.edit); WebSettings Websettings = index.getSettings(); Websettings.setBuiltInZoomControls(true); Websettin

我正在尝试从android activity调用JS函数,它在webview中加载页面,但找不到JS函数,该函数在桌面浏览器中运行得非常好

以下是JAVA代码

为JS设置几乎所有的内容

    index = (WebView) findViewById(R.id.edit);
    WebSettings Websettings = index.getSettings();
    Websettings.setBuiltInZoomControls(true);
    Websettings.setSupportZoom(true);  
    Websettings.setJavaScriptEnabled(true);
    Websettings.setBuiltInZoomControls(true); 
    Websettings.setRenderPriority(RenderPriority.HIGH);
    index.getSettings().setPluginState(PluginState.ON);
    index.setWebChromeClient(new WebChromeClient());
下面是我如何调用JS函数的

index.loadUrl("file:///android_asset/demo.html");
index.loadUrl("javascript:getList('"+JsonString+"');"); 
这是JS函数

function getList(jString) 
{
alert('function called');
}
下面是LogCat所说的

04-24 16:44:58.015: E/Web Console(31516): Uncaught ReferenceError: 
getList is not defined:1
更新:解决方案:-

正如Paul Lammertsma所建议的,我没有等待html页面完全加载,而是在webView中加载html页面后调用JS函数rite。所以在onPageFinished中调用JS函数解决了我的问题 这对我很有用:

index.setWebViewClient(new WebViewClient() {
                        @Override
                        public void onPageFinished(WebView view, String url) {
                            index.loadUrl("javascript:getList('"+JsonString+"');"); 
                        }

                    });

调用
loadUrl()
是异步的;当您调用JavaScript以执行JavaScript函数时,JavaScript可能尚未加载。也许您希望在页面加载完成后调用该函数。

JavaScript和应用程序之间的双向通信可以通过WebView.addJavascriptInterface()实现。如果不添加javascript接口,就不可能调用javascript函数。检查此示例:
我认为JS功能在正常的默认浏览器中不起作用,我认为您需要使用
ponegap
工具


webview

中显示JS不起作用,JS函数在默认android webview中起作用,请看我的问题中的更新,它是如何按照Paul Lammertsma的建议为我工作的。是的,这是不可能的,但只有在为android 4.0+开发应用程序的情况下,我认为…不,这个API在所有版本的android上都受支持。但是在2.3 Hello Paul上它非常不稳定,如果我必须做一些逻辑工作,而不仅仅是立即注入JS呢。如果我必须在一个为每个项注入javascript行的函数中迭代一个项数组,那么可能需要临时阻止其他LoadURL吗?或者webview会等到所有onPageFinished()逻辑终止后再加载另一个URL吗?我会应用一个JavaScript接口来通知Android webview内部的情况,正如Suk所建议的那样。