netscape.javascript.JSException:SyntaxError:意外的关键字'this'。预期')'结束参数列表

时间:2015-11-07 18:41:33

标签: java jquery html webview javafx

我正在尝试将一个文本字符串插入到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)

我做错了什么?

2 个答案:

答案 0 :(得分:1)

传递给Javascript方法的字符串需要有引号:

webEngine.executeScript("testCheckMate(\"" + headerText + "\");");

答案 1 :(得分:0)

您传递了已经包含字符的字符串。因此,从Java方面,必须用 \” 对此字符串进行引用。但是,在JavaScript中,此String再次被解析,并且 \“ 将成为字符串的结尾。这就是引发end参数列表错误的原因。 传递用于调用函数的字符串时,应在Java端使用:

ret = ret.replaceAll("\"","\\\\\""); 

这解决了我的问题。