我正在使用带有本地数据的Android WebView,首先设置一个JavaScript环境,然后加载依赖于JavaScript环境存在的Web内容:
test.js
alert("test.js: type of window.myVar is: " + (typeof window.myVar));
window.myVar = {};
的test.html:
<!DOCTYPE>
<html><head>
<script>
alert("test.html: type of window.myVar is: " + (typeof window.myVar));
</script>
</head><body></body></html>
在Java中加载程序:
private void loadData() {
_webView.loadUrl("javascript:" + testJSContent);
_webView.loadDataWithBaseURL(null, testHTMLContent, "text/html", "utf-8", null);
}
第一次触发 loadData()时, window.myVar 可以从加载的HTML页面获得,但 undefined 可用于任何后续尝试。以下是三个调用的警报输出:
- &GT; loadData()称为
“test.js:window.myVar的类型是:undefined”
“test.html:window.myVar的类型:对象”
- &GT; loadData()称为
“test.js:window.myVar的类型:对象”
“test.html:window.myVar的类型是:undefined”
- &GT; loadData()称为
“test.js:window.myVar的类型是:undefined”
“test.html:window.myVar的类型是:undefined”
注入创建的JavaScript对象为什么只能在第二页加载之前持久存在?
感谢您的帮助!
答案 0 :(得分:0)
您应首先加载html,然后在该页面完全加载后注入javascript。在WebViewClient的OnPageFinished中执行此操作。