我把这个html内容存储在strings.xml中
<string name="html">
<![CDATA[
<html>
<head>
<style>
*{
margin: 0 0 0 0;
padding: 0 0 0 0;
}
body{
background: #000;
color: #FFF;
}
#content {
text-align: justify;
}
</style>
<script type="text/javascript">
window.onload = function(){
document.getElementById("content").innerHTML = "Changed";
}
</script>
</head>
<body>
<div id="content">
<p>Hello</p>
</div>
</body>
</html>
]]></string>
这应该会将id内容为“changed”的div更改为“changed”,如果您在浏览器中尝试,它可以正常工作。问题是,即使我们启用了setjavascriptenabled(true),它也不能在webview中工作。
以下是我的活动:
...
WebView view = (WebView) findViewById(R.id.web_webView1);
WebSettings settings = view.getSettings();
settings.setJavaScriptEnabled(true);
settings.setPluginsEnabled(true);
settings.setDomStorageEnabled(true);
view.loadData(getString(R.string.html), "text/html", "utf-8");
...
我不知道它为什么不工作?有线索吗?:)
最佳答案
我对html也有类似的问题,它的内联javascript无法在通过WebView
加载的loadData
中工作,控制台错误一直说:
SyntaxError: Unexpected Identifier
结果发现问题在于我的内联javascript语法太松散,必须严格使用行尾标记,
;
。例如,这是坏的:
<html>
<script>
function foo() {
var x = 'sd'
}
</script>
</html>
在这种情况下:
<html>
<script>
function foo() {
var x = 'sd';
};
</script>
</html>
注意添加了两个分号,这两个分号都是修复语法错误所必需的。