2

我通过首先设置 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 对象只在第二个页面加载之前是持久的?

谢谢你的帮助!

4

1 回答 1

0

您应该首先加载 html,然后在该页面完全加载后注入 javascript。在 WebViewClient 的 OnPageFinished 中执行此操作。

于 2013-03-15T22:28:28.463 回答