我正在尝试将一个文本字符串插入到WebView内HTML文档中的<h3 class="panel-title"></h3>
元素中。
的.java
webEngine = webView.getEngine();
String headerText = "This is the Header";
webEngine.executeScript("testCheckMate(" + headerText + ");");
HTML
<h3 class="panel-title"></h3>
<script>
$(document).ready(function() {
window.testCheckMate = function (data) {
$( ".panel-title" ).append( data );
};
});
</script>
然而,我不断收到错误:
Caused by: netscape.javascript.JSException: SyntaxError: Unexpected keyword 'this'. Expected ')' to end a argument list.
at com.sun.webkit.dom.JSObject.fwkMakeException(JSObject.java:128)
at com.sun.webkit.WebPage.twkExecuteScript(Native Method)
at com.sun.webkit.WebPage.executeScript(WebPage.java:1439)
at javafx.scene.web.WebEngine.executeScript(WebEngine.java:982)
我做错了什么?
答案 0 :(得分:1)
传递给Javascript方法的字符串需要有引号:
webEngine.executeScript("testCheckMate(\"" + headerText + "\");");
答案 1 :(得分:0)
您传递了已经包含“ 字符的字符串。因此,从Java方面,必须用 \” 对此字符串进行引用。但是,在JavaScript中,此String再次被解析,并且 \“ 将成为字符串的结尾。这就是引发end参数列表错误的原因。 传递用于调用函数的字符串时,应在Java端使用:
ret = ret.replaceAll("\"","\\\\\"");
这解决了我的问题。