Vaadin14中Anchor默认点击事件捕获、触发及类型相关问题咨询
针对Vaadin 14 + Java 11环境下Anchor点击相关问题的解答
1. 捕获默认点击事件的方法
你当前使用addEventListener添加的点击监听器已经可以捕获到触发默认下载行为的原生点击事件,和触发内置下载逻辑的是同一个事件。你感知到差异是因为没有阻止默认行为时,原生<a>标签的下载逻辑会和你的自定义回调并行执行。
如果需要在下载前执行自定义逻辑,直接在你当前的回调方法中编写即可;如果需要先完成自定义逻辑再决定是否触发下载,可以在回调中调用event.preventDefault()阻止默认下载,后续需要下载时再手动触发即可。
示例代码:
Anchor download = new Anchor(); download.getElement().addEventListener("click", event -> { // 自定义逻辑,比如埋点、参数校验 doStuff(); // 如果需要阻止默认下载,加上这行 // event.preventDefault(); });
2. 程序化触发默认点击的方法
可以直接调用元素的JS原生click方法实现和用户手动点击完全一致的效果,和Button的click()方法逻辑等效,配置了StreamResource的场景下会直接触发下载:
// 程序化触发点击 download.getElement().callJsFunction("click");
3. 对应的@DomEvent类型
Anchor的点击属于标准原生DOM的click事件,Vaadin没有为Anchor单独封装专属的@DomEvent子类,你通过addEventListener("click", ...)监听的就是原生的DOM点击事件,和触发默认下载的事件完全一致。
内容的提问来源于stack exchange,提问作者Mari
相关产品推荐
相关产品推荐

