Last active
December 20, 2015 11:29
-
-
Save Kane-Shih/6123744 to your computer and use it in GitHub Desktop.
deprecated
use WebView's loadUrl() with a file URI, then the Javascript will be able to cross domain.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head> | |
<script type="text/javascript"> | |
// to simulate Android WebView... which exposes itself as "Android" here by addJavascriptInterface() | |
var Android = { | |
Log: function(msg) { | |
document.getElementById("log").innerHTML += "Log(" + msg + ")<br/>"; | |
}, | |
doHttpGet: function(url, requestCode) { | |
document.getElementById("log").innerHTML += "Android.doHttpGet(" + url + ", " + requestCode + ")<br/>"; | |
if(requestCode === "step one") { | |
data = "fake-data-one"; | |
} else if (requestCode === "step two"){ | |
data = "fake-data-two"; | |
} | |
onHttpGetDone(requestCode, data); | |
}, | |
onJsParseDone: function(result) { | |
document.getElementById("log").innerHTML += "onJsParseDone(" + result + ")"; | |
} | |
}; | |
Android.Log("JAVASCRIPT LOADING START"); | |
// request by Android | |
function parse(url) { | |
Android.Log("parse: " + url); | |
// ask Android to do HTTP GET in order to avoid NETWORK_ERR: XMLHttpRequest Exception 101 | |
Android.doHttpGet(url, "step one"); | |
} | |
Android.Log("function loaded: parse()"); | |
// Android send the HTTP GET result | |
function onHttpGetDone(requestCode, data) { | |
Android.Log("onHttpGetDone - " + requestCode + ", " + data); | |
if(requestCode === "step one") { | |
Android.Log("do for step one"); | |
parseForStepOne(data); | |
} else if (requestCode === "step two") { | |
Android.Log("do for step two"); | |
parseForStepTwo(data); | |
} else { | |
Android.Log("unknown request code"); | |
} | |
} | |
Android.Log("function loaded: onHttpGetDone()"); | |
function parseForStepOne(data) { | |
Android.Log("parseForStepOne - data:" + data); | |
// parsing... find next thing we want to HTTP GET | |
Android.doHttpGet("http://url_for_2", "step two"); | |
} | |
Android.Log("function loaded: parseForStepOne()"); | |
function parseForStepTwo(data) { | |
Android.Log("parseForStepTwo - data:" + data); | |
// parsing.. if no more HTTP GET is needed and we find the answer | |
result = "result_for_" + data; | |
Android.onJsParseDone(result); | |
// else, we failed | |
//Android.onJsParseFailed(result); | |
} | |
Android.Log("function loaded: parseForStepTwo()"); | |
Android.Log("JAVASCRIPT LOADING END"); | |
</script> | |
</head> | |
<body onload="parse('http://url_for_1');"> | |
<div id="log"> | |
</div> | |
<div id="data_block">---end---<br/></div> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment