Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uncaught ReferenceError while loading asset file on android 4.4

I am using following MathJax app code. http://cs.jsu.edu/wordpress/?p=498#comment-217

In following function i am trying to load file from asset directory.

public static boolean makeMathView_new(WebView webview) {
            webview.getSettings().setRenderPriority(RenderPriority.HIGH);
            webview.getSettings().setJavaScriptEnabled(true);
            webview.loadDataWithBaseURL("http://bar", "<script type='text/x-mathjax-config'>"
                    +"MathJax.Hub.Config({ messageStyle: 'none', showMathMenu: false, jax: ['input/TeX','output/HTML-CSS'], "
                    +"extensions: ['tex2jax.js'],"         
                + "'HTML-CSS': { scale: 100 },"              
                    +"TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'] } });</script>"
                +"<script type='text/javascript' src='file:///android_asset/MathJax/MathJax.js'></script>" 
                + "<span id='math'></span>","text/html","utf-8", "");


        return true;
    }

When running on android 4.4 emulator, I am getting following errors.

V/WebViewChromium(1342): Binding Chromium to the background looper Looper{b1da1340}
 I/chromium(1342): [INFO:library_loader_hooks.cc(112)] Chromium logging enabled: level = 0, default verbosity = 0
 I/BrowserProcessMain(1342): Initializing chromium process, renderers=0
 W/chromium(1342): [WARNING:proxy_service.cc(888)] PAC support disabled because there is no system implementation
 E/chromium(1342): [ERROR:gl_surface_egl.cc(153)] No suitable EGL configs found.
 E/chromium(1342): [ERROR:gl_surface_egl.cc(620)] GLSurfaceEGL::InitializeOneOff failed.
 E/chromium(1342): [ERROR:gl_surface_egl.cc(153)] No suitable EGL configs found.
 E/chromium(1342): [ERROR:gl_surface_egl.cc(620)] GLSurfaceEGL::InitializeOneOff failed.
 E/chromium(1342): [ERROR:gpu_info_collector.cc(86)] gfx::GLSurface::InitializeOneOff() failed

I/chromium(1101): [INFO:CONSOLE(1)] "Uncaught ReferenceError: MathJax is not defined", source: http://bar/ (1)

Update: After incorporating ksasq's suggestion , Here is my new code but it is still not working.

webview.loadDataWithBaseURL("http://bar", "<script type='text/x-mathjax-config'>"
      + "function setupMathJax() {"
                + "MathJax.Hub.Config({ messageStyle: 'none', showMathMenu: false, jax: ['input/TeX','output/HTML-CSS'], "
                    +"extensions: ['tex2jax.js'],'HTML-CSS': { scale: 100 },"            
                    +"TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'] } });" 
     + "}"
                + "</script>"
                + "<script type='text/javascript' src='file:///android_asset/MathJax/MathJax.js'></script>" 
     + "<body onload='setupMathJax()'>"
                + "<span id='math'></span>" 
     + "</body>"
                ,"text/html","utf-8", "");
like image 524
Shakti Malik Avatar asked Aug 12 '26 04:08

Shakti Malik


2 Answers

You have to replace all the lines loadUrl(...) with evaluateJavascript(...). But this is only for KitKat (API 19 or above), so you need to do an SDK version check first:

if (android.os.Build.VERSION.SDK_INT < 19) {
    mWebView.loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);");
} else {
    mWebView.evaluateJavascript("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);",null);
}
like image 134
Neoh Avatar answered Aug 14 '26 19:08

Neoh


if (android.os.Build.VERSION.SDK_INT < 19) {
                    v.loadUrl(url);
                } else {
                    v.evaluateJavascript(url,null);
                }
like image 30
Tiwa Babalola Avatar answered Aug 14 '26 18:08

Tiwa Babalola



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!