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
asset
folder. 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
Post a Comment