我有一个Android WebView。我将HTML传递给它(作为字符串)。这个HTML包含一些基本的javascript。
加载后,HTML尝试调用javascript函数(在<head></head>
中定义)。这在我的浏览器桌面上工作得很好,所以我确信HTML/Javascript本身是好的,但当我加载相同的HTML到我的WebView时,它无法工作。
下面是我实例化WebView的方法:
WebView view = new WebView(context);
WebSettings settings = view.getSettings();
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(false);
view.setWebChromeClient(new CustomWebChromeClient());
view.setWebViewClient(new CustomWebViewClient());
view.loadData(ARBITRARY_HTML, "text/html", "utf-8");
加载的HTML是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My head hurts from head-desking</title>
<style type="text/css">
#content
{
display: none;
}
</style>
<script type="text/javascript">
//<!--
function ShowContent()
{
document.getElementById('content').style.display = 'block';
}
//-->
</script>
</head>
<body onload="ShowContent()">
<div id="content">
This content should be shown, but isn't!
</div>
<div id="other">
All I see is this content... and that makes me question my self worth.
</div>
</body>
</html>
这会产生(仅在Android上)运行时javascript错误:"Uncaught ReferenceError: ShowContent is not defined"。
我有一个假设。//<!-- ... //-->
技术,这是一个编造的黑客为真正的老浏览器是如此的过时。