如何在JavaFX webView中将Java变量的值获取为javascript?

时间:2015-06-03 09:31:34

标签: java javascript xpath webview javafx

我使用以下代码在Java和Javascript对象之间进行通信。

find.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent arg0) {
        JSObject window = (JSObject) webEngine.executeScript("window");
        window.setMember("clickController", new WebViewController());

        webEngine.executeScript("var element = document.evaluate(clickController.getXpath(), document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;"+
                    "clickController.printId(element, \"sad\");"+
                    "if (element != null) {"+
                    "element.style.backgroundColor = \"#FDFF47\";"+
                    "}");
    }
});


public void printId(Object object, String returnValue) {
    //              System.out.println(returnValue);
    AttributesModel model = new AttributesModel();
    if (org.w3c.dom.html.HTMLElement.class.isAssignableFrom(object.getClass())) {
        org.w3c.dom.html.HTMLElement it = (org.w3c.dom.html.HTMLElement) object;
        model.setId(it.getId());
        model.setValue(it.getAttribute("value"));
        model.setName(it.getAttribute("name"));
        model.setCls(it.getClassName());
        model.setLink(it.getTextContent());
        model.setTag(it.getTagName());
        model.setXpath(returnValue);
    }
    System.out.println(model.toString());
}

public String getXpath(){
    return xpath.getText();
}

printId()getXpath()方法包含在名为WebViewController的类中。我点击了&#34;查找&#34;其余代码执行的按钮。 clickController.printId()工作正常。问题出在clickController.getXpath()上。我无法使用它获取xpath值。当我直接指定xPath时,它可以工作。但是我将在运行时从用户那里获得Xpath。所以我需要调用getXpath()方法。执行时,浏览器崩溃。我哪里错了?请帮忙。

0 个答案:

没有答案