android - Javascript is not working in webView when Loaded from asset folder but working from both http server & localhost -


i trying load offline version of python documentation webview assetfolder. offline docs work in pc web browser in offline not working in webview (something jquery missing).

@suppresslint("setjavascriptenabled") public class mainactivity extends activity {      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);         webview webview = (webview) findviewbyid(r.id.wrapper);         webview.getsettings().setjavascriptenabled(true);         webview.setwebchromeclient(new webchromeclient());         webview.loadurl("file:///android_asset/python/index.html");     }  } 

and error message shown when tried load home page or navigate page.

09-24 01:03:02.789: e/web console(479): referenceerror: can't find variable: $ @ file:///android_asset/python/index.html:164 

and above error jquery code snippet ( think jquery library isn't loading)

<script type="text/javascript">$('#searchbox').show(0);</script> 

but when load pages local server localhost or http server, working perfectly. did miss?

edit showing nothing in webview. after using loaddatawithbaseurl:

@suppresslint("setjavascriptenabled") public class mainactivity extends activity {      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);         webview webview = (webview) findviewbyid(r.id.wrapper);         webview.getsettings().setjavascriptenabled(true);         webview.setwebchromeclient(new webchromeclient());         assetmanager assetmanager = getassets();         string htmlpage = null;         inputstream input;         try {             input = assetmanager.open("python/index.html");              int size = input.available();             byte[] buffer = new byte[size];             input.read(buffer);             input.close();             // byte buffer string             htmlpage = new string(buffer);          } catch (ioexception e) {             // todo auto-generated catch block             e.printstacktrace();         }             webview.loaddatawithbaseurl("file:///android_asset/", htmlpage, "text/html", "utf-8", "");      } } 

your html page should having reference

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"> </script> 

since docs should load offline jquery js not being loaded. bundle jquery along application , reference locally this

  <script src="file:///android_asset/js/jquery-1.8.2.min.js"></script> 

also include

<script src="file:///android_asset/js/jquery.mobile-1.3.2.min.js"></script> 

you might have load html page using loaddatawithbaseurl seen below instead of loadurl.

 assetmanager assetmanager = getassets();             string htmlpage=null;             inputstream input;             try {                 input = assetmanager.open("python/index.html");                  int size = input.available();                 byte[] buffer = new byte[size];                 input.read(buffer);                 input.close();                 // byte buffer string                 htmlpage = new string(buffer);              } catch (ioexception e) {                 // todo auto-generated catch block                 e.printstacktrace();             }    webview.loaddatawithbaseurl("file:///android_asset/", htmlpage, "text/html", "utf-8", ""); 

note: jquery-1.8.2.min.js , jquery.mobile-1.3.2.min.js files should present in assets folder.

hope helps.


Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -