【发布时间】:2015-03-14 21:01:53
【问题描述】:
我正在使用代码创建 WebView,而不是通过 XML 布局加载。 webview 似乎已正确创建,但我看到了错误:
W/AwContents( 4564): nativeOnDraw failed; clearing to background color.
I/chromium( 4564): [INFO:CONSOLE(1)] "Uncaught ReferenceError: Android is not defined",
...
如果我将 WebView 放在我的 XML 布局中,我不会收到这些错误。请注意,如果脚本运行,它会将 onLoadEvent 字段值从“no”更改为“yes。这种情况正在发生,因此显然脚本正在运行。但它没有获取用户名和密码,这表明“Android " 未定义。
我也试过在 webView.loadData(); 之前执行 addView();同样的错误。
这是创建 WebView 的代码:
@SuppressLint("SetJavaScriptEnabled")
private void onOk ()
{
Log.d ("RegTest", "onOk");
webView = new WebView (this);
webView.setLayoutParams (new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled (true);
CharSequence cs = readAsset ("input_form");
webView.loadData (cs.toString(), "text/html", "UTF-8");
contentView.addView (webView);
}
这里是“input_form”的片段,它是 WebView 内容的来源:
<!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>
...
<script type="text/javascript">
function onLoadValues ()
{
document.getElementById ("onLoadEvent").value = "yes";
document.getElementById ("FullName").value = Android.getFullName();
document.getElementById ("EmailAddress").value = Android.getEmailAddr();
}
</script>
</head>
<body onload="onLoadValues()">
<form name="catwebformform52174" method="post" ...>
<fieldset>
<div class="pure-control-group">
<label for="onLoadValues">onLoadEvent</label>
<input id="onLoadEvent" name="onLoadEvent" type="text" placeholder="no">
</div>
<div class="pure-control-group">
<label for="FullName">Name</label>
<input id="FullName" name="FullName" type="text" placeholder="Name">
</div>
<div class="pure-control-group">
<label for="EmailAddress">Email Address</label>
<input id="EmailAddress" name="EmailAddress" type="email" placeholder="Email Address">
</div>
</fieldset>
</form>
</body>
</html>
【问题讨论】:
标签: javascript android webview