Vaadin 执行多行 javascript 代码

问题描述 投票:0回答:1

我想调用一个带有回调的函数,其中包含来自 vaadin 组件的多行 javascript 代码。

当我使用

getElement().executeJs(...)
UI.getCurrent().getPage().executeJs(...)
并传递代码时,仅执行第一行。

这是一个仅调用第一个 alert 的示例。有没有办法从java调用所有行?

@NpmPackage(value = "leaflet-image", version = "0.4.0")
@JsModule("leaflet-image/leaflet-image.js")
@Tag("leaflet-image")
public class LLeafletImage extends Div {

    private static final long serialVersionUID = 1L;

    public void print(LMap map) {
        
        UI.getCurrent().getPage().executeJs("alert('-1');"
            + "leafletImage($0, function(err, canvas) {"
            + "alert('0');"
            + "var img = document.createElement('img');"
            + "var dimensions = map.getSize();"
            + "img.width = dimensions.x;"
            + "img.height = dimensions.y;"
            + "img.src = canvas.toDataURL();"
            + "document.getElementById('images').innerHTML = '';"
            + "document.getElementById('images').appendChild(img);"
            + "});"
            + "alert('2');", map.clientComponentJsAccessor());
    }
}
javascript java vaadin
1个回答
0
投票

我发现executeJs() 可以并且确实执行多行javascript 代码。但如果执行过程中出现错误,脚本就会被中断。

© www.soinside.com 2019 - 2024. All rights reserved.