在支持以前的活动时,来自webview的JSInterface未定义

时间:2012-05-02 18:03:59

标签: android android-webview android-activity

我有一个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

所以我确定我的界面在第二次加载时有问题......

由于

2 个答案:

答案 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加载,而不是完美,但它的效果非常好