Android - 在调用JavaScript函数时,WebView会崩溃应用程序

时间:2016-12-13 22:09:43

标签: javascript android webview

在WebView上启用Javascript。因为没有JavaScipt网页图像缩放不能正常工作。这是我在WebView中加载url的代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final String url = "http://nuz.uz/ekonomika-i-finansy/18651-v-2017-godu-v-uzbekistane-prekratitsya-realizaciya-lampochek-ilicha.html";

        final WebView webview = (WebView) findViewById(R.id.webview);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            WebView.setWebContentsDebuggingEnabled(true);
        }
        webview.getSettings().setJavaScriptEnabled(true);
        webview.setWebChromeClient(new WebChromeClient() {
            public void onConsoleMessage(String message, int lineNumber, String sourceID) {
                Log.d("Tag", message + " -- From line "
                        + lineNumber + " of "
                        + sourceID);
            }
        });
        webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String loadingUrl) {
                if (loadingUrl.equals(url)) return false;//open news link in webview
                else {
                    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(loadingUrl));
                    startActivity(browserIntent);
                    return true;
                }
            }

            @Override
            public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error){
                Log.d("Tag", "Error occured: "+error.toString());
            }

        });
        webview.loadUrl(url);

    }

}

当我运行应用程序时,它正在打开网页。加载页面的所有内容后,应用程序崩溃。我试图在控制台上显示错误,显示以下错误:

  

12-14 02:42:06.936 25760-25760 /? D / Tag:未捕获TypeError:不能   呼叫方法' init'未定义 - 来自第951行   http://nuz.uz/ekonomika-i-finansy/18651-v-2017-godu-v-uzbekistane-prekratitsya-realizaciya-lampochek-ilicha.html

我检查了网址的内容,发现以下内容导致应用崩溃:

<script type="text/javascript">

    jQuery(document).ready(function () {

        App.init();
    });
</script>
  

第951行:App.init();

如何在不关闭JavaScript的情况下解决此问题?如何防止WebView崩溃?

1 个答案:

答案 0 :(得分:0)

如果您查看页面的源代码,就在第951行上方,您就会找到

<script type="text/javascript" src="/templates/nuz_uz/assets/js/app.js"></script>

此脚本声明App变量是匿名函数的结果,但该函数不返回任何内容。因此,当jQuery触发ready事件时,App仍为undefined。你基本上需要修复网站上的错误,你的Android应用程序没问题。