[英]Cannot get javascript innerHtml to work on WebView
我正在使用带有javaScript接口的WebView。 我要做的就是如果选中某些复选框,则更改跨度的内部html。
以下是我在strings.xml中拥有的一个字符串的片段。 表单将在onSubmit上调用此函数,如果未通过,则不应继续。 问题是我无法使innerHtml工作(每次都返回true)。
这有效
<script type=\"text/javascript\" language=\"javascript\">
function pass() {
return javaInterface.checkboxPass();
/*
if(passed) {
//change the instructions
document.getElementById(\"txtInstructions\").innerHTML = \'Loading Website...\';
}
return passed;
*/
}
</script>
每次都返回true
<script type=\"text/javascript\" language=\"javascript\">
function pass() {
var passed= javaInterface.checkboxPass();
if(passed) {
//change the instructions
document.getElementById(\"txtInstructions\").innerHTML = \'Loading Website...\';
}
return passed;
}
</script>
这是文档正文中的跨度
<span id=\"txtInstructions\">%1$s</span>
我究竟做错了什么?
我无法说出为什么代码的行为不像您想要的那样,但是我可以告诉您您正在尝试以过于复杂的方式进行操作。 将JavaScript和HTML存储在XML文件中似乎是个坏主意。 我猜这是合法的JavaScript,但是将变量命名为与父函数相同似乎只是错误的,一般来说,您不应该使用这样的作用域微妙之处,除了混淆之外,它无济于事。
我仍然认为您的方法返回的并不是严格意义上的布尔值。 我会尝试做这样的事情:
<script type="text/javascript" language="javascript">
function pass() {
var passed= javaInterface.checkboxPass();
if(JSON.parse(passed)) {
//change the instructions
document.getElementById(\"txtInstructions\").innerHTML = \'Loading Website...\';
}
return passed;
}
</script>
这将排除“布尔值”被引号引起来或其他la脚的可能性。 如果这确实是Java接口,则可能是将布尔值转换为字符串。
我不认为布尔值可以作为真实的布尔值传递,尤其是因为javascript和Java在后台运行时有所不同。 您可以使用eval,但这不是一个好习惯,因为如果它是一个函数,它将运行它。
IE没有解析功能,因此您必须使用以下功能:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.