我有一个webview,它有一个JSInterface:
mWebView.addJavascriptInterface(new JSInterfacelistArticle(mWebView, this, website), "interfaceWebsite");
当我使用javascript函数从我的界面调用函数时:
window.interfaceWebsite.doToast(info);
第一次工作正常,但是当我的活动结束(),然后我回到这个时,我收到了这个错误:
E/Web Console(28654): Uncaught TypeError: Cannot call method 'doToast' of undefined at :1
为什么我第二次开始活动时界面无法正常工作?
编辑: 如果我删除窗口。当我调用一个函数时,我得到了:
Uncaught ReferenceError: interfaceWebsite is not defined at :1
所以我确定我的界面在第二次加载时有问题......
由于
答案 0 :(得分:0)
我为webview覆盖了我的loadurl函数:
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) {
loadingFinished = false;
mWebView.loadUrl(urlNewString);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
loadingFinished = true;
}
});
我有时需要将loadingFinished设置为静态变量,但我忘记了当我创建活动的新实例时我的var不会更新:只需要将false设置为loadFinish;
现在,我的帖子一直等到我的网页浏览完全加载网站
是的,非常愚蠢。
答案 1 :(得分:-2)
在脚本开头,添加:
while(typeof JSInterface === "undefined"){ }
这将“等待”JSInterface加载,而不是完美,但它的效果非常好