我试图从 Java 调用 JavaFx WebView 中的 JavaScript,但我得到:
Exception in thread "JavaFX Application Thread" netscape.javascript.JSException: TypeError: undefined is not a function
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)
.java 文件
private WebView emailSubject() {
String pageURL = "D:myproject\\src\\resources\\WEB_INF\\forms\\readMail\\emailBody.html";
pageURL = pageURL.replace("\\", "/");
webView = new WebView();
webView.setMaxHeight(52);
webEngine = webView.getEngine();
emailSubject = getHTMLMailSubject();
webEngine.getLoadWorker().stateProperty().addListener((ov, oldState, newState) -> {
if (newState == State.SUCCEEDED) {
webEngine.executeScript("testCheckMate(\"" + emailSubject + "\");");
}
});
webEngine.load("file:" + pageURL);
return webView;
}
指向这一行的异常:
webEngine.executeScript("testCheckMate(\"" + emailSubject + "\");");
HTML:
<!-- Latest compiled and minified JavaScript -->
<script src="../../baseJS/JQuery/jquery-1.11.3.js"></script>
<script src="../../baseJS/JQuery/jquery.min.js"></script>
<div class="panel panel-success">
<div class="panel-heading">
<h3 class="panel-title">Home Alone</h3>
</div>
</div>
<script>
$(document).ready(function() {
window.testCheckMate = function (data) {
$(".panel-title" ).append(data);
};
});
</script>
我究竟做错了什么?谢谢大家。
请注意,我已经尝试过:
load();
已经
$(".panel-title" ).load(data);
以及与
testCheckMate
外部$(document).ready(function()
,但还是一无所获。
testCheckMate = function (data) {
$(".panel-title" ).load(data);
};