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

Leaflet在Safari报undefined is not an object错误,Chrome运行正常

Leaflet跨浏览器兼容问题:Chrome正常,Safari报undefined is not an object (evaluating 't.layerAdd')

问题详情

功能在Chrome浏览器中可正常运行,但在Safari浏览器中抛出错误:undefined is not an object (evaluating 't.layerAdd')

相关截图

功能界面

功能界面截图

业务代码

业务代码截图

Leaflet报错栈

Leaflet库报错栈截图

排查与解决方向

  • 版本兼容性检查:确认当前使用的Leaflet版本是否兼容Safari,建议升级到最新稳定版(如1.9.4),或降级到已知兼容Safari的版本。Safari对ES6+语法的处理逻辑和Chrome存在差异,旧版本库可能未做适配。
  • 对象初始化时机验证:报错说明t对象在Safari中未正确初始化。检查图层添加逻辑,确保调用layerAdd相关方法时,地图实例或图层组已完成初始化。Safari的DOM加载顺序、事件循环和Chrome有差异,避免在DOM未就绪时执行Leaflet操作。
  • 上下文指向排查:如果代码中使用了箭头函数,尝试替换为普通函数并手动绑定this,排查是否因上下文丢失导致t变为undefined。
  • API规范调用:确保通过Leaflet官方API(如L.map.addLayer())添加图层,不要直接操作Leaflet内部对象属性,不同浏览器的内部实现细节存在差异。
  • Safari调试追踪:打开Safari开发者工具,在Sources面板设置断点,追踪t变量的来源,对比Chrome中的变量状态,定位具体的差异环节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:42:45