You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome下event.currentTarget值为undefined——Salesforce Lightning组件问题

解决Salesforce Lightning组件中Chrome获取点击元素id返回undefined的问题

看起来你遇到的是Salesforce Lightning事件模型在不同浏览器中的兼容问题,我来帮你梳理下原因和解决方案:

问题根源

在Salesforce Lightning框架中,控制器方法里接收的event是Aura封装的框架事件对象,而非原生DOM事件。IE由于历史事件模型的特殊性,可能让event.currentTarget意外指向了目标元素,但Chrome等现代浏览器遵循标准事件机制,这里的currentTarget并不指向你期望的<c:button>组件对应的DOM元素,所以才会返回undefined。

解决方案

推荐使用Lightning框架提供的API来获取组件属性,这是跨浏览器兼容的最佳实践:

方法1:通过事件源获取组件属性

在你的openSkype控制器方法中,使用event.getSource()获取触发事件的组件实例,再通过get("v.id")读取id属性:

({
    openSkype : function(component, event, helper) {
        // 获取触发事件的按钮组件
        var targetButton = event.getSource();
        // 读取组件的id属性
        var buttonId = targetButton.get("v.id");
        console.log(buttonId); // 此时会输出"I_WANT_THIS_VALUE"
    }
})

方法2:获取原生DOM元素(不推荐,除非必要)

如果你确实需要操作原生DOM元素,可以通过组件实例的getElement()方法获取底层DOM节点,再读取其id:

({
    openSkype : function(component, event, helper) {
        var targetButton = event.getSource();
        var domElement = targetButton.getElement();
        console.log(domElement.id);
    }
})

注意:Lightning框架会对组件的DOM元素进行封装和管理,直接操作DOM并非最佳实践,优先使用方法1。

额外说明

这种跨浏览器差异的核心是Lightning对事件的封装机制,避免依赖原生DOM事件的currentTarget/target属性,改用框架提供的API能确保在所有浏览器(包括Chrome、Firefox、IE)中稳定运行。

内容的提问来源于stack exchange,提问作者Mizlul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:14:49