我通过首先设置 JavaScript 环境然后加载依赖于 JavaScript 环境存在的 Web 内容来使用带有本地数据的 Android WebView:
测试.js:
alert("test.js: type of window.myVar is: " + (typeof window.myVar));
window.myVar = {};
测试.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 页面获得,但在任何后续尝试中未定义。这是三个调用的警报输出:
-> loadData() 称为
“test.js:window.myVar 的类型为:未定义”
“test.html:window.myVar 的类型为:对象”
-> loadData() 称为
“test.js:window.myVar 的类型”是:对象”
“test.html:window.myVar 的类型是:未定义”
-> loadData() 称为
“test.js:window.myVar 的类型是:未定义”
“test.html:window.myVar 的类型是:不明确的”
有什么想法为什么通过注入创建的 JavaScript 对象只在第二个页面加载之前是持久的?
谢谢你的帮助!