Android WebView找不到JavaScript函数
我正在尝试从android activity调用JS函数,它在webview中加载页面,但找不到JS函数,该函数在桌面浏览器中运行得非常好 以下是JAVA代码 为JS设置几乎所有的内容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
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所建议的那样。