1

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

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

谢谢

4

2 回答 2

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 不会更新:只需将 loadingFinish 设置为 false;

现在,我的线程等到我的 webview 完全加载网站

是的,相当愚蠢。

于 2012-05-03T15:35:09.400 回答
-2

在脚本的开头,添加:

while(typeof JSInterface === "undefined"){  }

这将“等待” JSInterface 加载,并不完美,但效果非常好

于 2013-11-24T22:12:30.673 回答