为什么Android WebView会在第二页加载时重置JavaScript上下文?

时间:2013-03-15 16:06:20

标签: javascript android webview

我正在使用带有本地数据的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对象为什么只能在第二页加载之前持久存在?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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