将WebView中DOM节点的内容绑定到StringProperty

时间:2016-01-14 00:58:20

标签: javascript java javafx webview

我一直在尝试将WebView中html文档中DOM节点的内容绑定到StringProperty。我所拥有的是这样的:

final String html = "<!DOCTYPE html><html><head><meta charset=\"UTF-8\"><script>function get(){return document.getElementsById('code')[0];}</script><style>body{font-family:\"Monospaced\";}</style></head><body><pre id=\"code\"></pre></body></html>";

engine.loadContent(html);
final JSObject pre = (JSObject) engine.executeScript("get()"); // Defined in html

property.addListener((ob, o, n) -> {
    pre.setMember("innerHTML", n);
});

当我执行程序并修改StringProperty时,我得到一个如下例外:

  

线程中的异常&#34; JavaFX应用程序线程&#34; netscape.javascript.JSException:ReferenceError:无法找到变量:get

我不确定自己是否走在正确的轨道上。看起来应该可以监听属性中的更改并使用javascript将这些更改推送到文档中。我做错了吗?

1 个答案:

答案 0 :(得分:0)

Javascript中没有getElementsById功能。 ID是唯一的。如果需要多个选择器,请使用getElementById(不是元素,不使用数组表示法)或使用其他选择器。

JSFiddle示例基于您的代码:https://jsfiddle.net/jkennaly/db88u9f3/3/