ARMS这个报错是用户体验平台的报错吗?在ios13以下的设备中会有这个报错:undefined is not an object (evaluating 'g.loadEventEnd')
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的报错信息 undefined is not an object (evaluating 'g.loadEventEnd')
,结合知识库中的内容,可以判断该问题与 ARMS用户体验监控(RUM) 的前端监控功能相关。此错误通常出现在 iOS 设备中,尤其是在 iOS 13 以下的设备上。
以下是详细的分析和解决方案:
报错来源
g.loadEventEnd
属性时失败,原因是 g
对象未正确初始化或不存在。loadEventEnd
(页面完全加载的时间)。如果目标设备的浏览器或 WebView 不支持某些性能 API,则可能导致此类错误。iOS 13 以下设备的兼容性问题
performance.timing.loadEventEnd
可能在某些老旧设备上返回 undefined
,从而导致脚本报错。用户体验监控的影响
performance.timing
对象的属性之前,增加兼容性检查,确保目标属性存在且为有效值。例如:
if (performance && performance.timing && typeof performance.timing.loadEventEnd === 'number') {
const loadEventEnd = performance.timing.loadEventEnd;
// 继续处理逻辑
} else {
console.warn('Performance Timing API not fully supported on this device.');
}
crossorigin="anonymous"
属性:
<script src="http://another-domain.com/app.js" crossorigin="anonymous"></script>
Access-Control-Allow-Origin
:
Access-Control-Allow-Origin: *
const userAgent = navigator.userAgent || navigator.vendor || window.opera;
if (/iPhone OS [1-9]_\d/.test(userAgent)) {
console.log('Detected iOS version below 13, skipping performance monitoring.');
return;
}
确认报错来源
测试兼容性
undefined is not an object
的报错。检查 ARMS 配置
更新告警规则
此报错是由于 iOS 13 以下设备对 Performance Timing API 的支持不完整导致的,属于 ARMS 用户体验监控(RUM)的前端监控范畴。通过代码兼容性检查、CORS 配置、Agent 升级以及老旧设备的降级处理,可以有效解决该问题。建议结合 ARMS 控制台的日志和告警功能,进一步验证修复效果。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
云原生可观测基于Prometheus、Grafana 、OpenTelemetry 等核心产品, 形成指标、链路存储分析、异构数据源集成的数据层, 通过标准PromQL和SQL提供大盘展示、告警与探索能力。