作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力让 GTM JS 错误触发器触发我的 Angular 应用程序中未捕获的异常。
我在这里遵循了指南 https://www.simoahava.com/gtm-tips/track-javascript-errors-events/并完全按照他们提到的方式设置触发器和标签。
我抛出一个未捕获的异常来尝试测试它,希望看到错误事件出现在我的 GA 控制台的实时 View 中。
抛出错误时,我没有看到任何东西被插入 dataLayer
我还有其他标签\触发器,例如自定义 pageview
事件触发得非常好并且毫无问题地流向 GA。
标签设置
触发设置
谁能建议我在这里做错了什么?
最佳答案
Javascript error
触发器不触发,因为 angular
有一个默认的错误处理机制,它不会让错误传播到外面。它消耗错误,然后将其记录在控制台上。要验证,请尝试将以下脚本放入 index.html 文件中 -
<script>
window.onerror = function (msg, url, lineNo, columnNo, error) {
console.log('This wont get to console because Angular!! ');
return true;
}
</script>
如果您阅读
this google help page about javascript error trigger ,它说,标签是在
window.onError
上触发的由于 angular 的默认错误处理程序而永远不会发生的事件 -
Google Tag Manager's JavaScript error trigger is used to fire tagswhen an uncaught JavaScript exception (window.onError) occurs.
dataLayer
来手动触发触发器。 .但是你可能需要找出像
gtm.errorLineNumber
这样的属性和
gtm.errorUrl
你自己。结帐
this working sample on StackBlitz (您需要更改 index.html 中的脚本以指向您的 GTM 预览/调试)-
declare var dataLayer;
@Injectable()
export class ErrorsHandler implements ErrorHandler {
constructor(private injector: Injector) { }
handleError(error: any) {
const location = this.injector.get(LocationStrategy);
const message = error.message ? error.message : error.toString();
const url = location instanceof PathLocationStrategy
? location.path() : '';
const event = {
'event': "gtm.pageError",
'gtm.errorLineNumber': '',
'gtm.errorMessage': message,
'gtm.errorUrl': url,
'gtm.uniqueEventId': dataLayer.length+1
}
dataLayer.push(event);
}
}
@Injectable()
export class ErrorsHandler implements ErrorHandler {
constructor(private injector: Injector) { }
handleError(error: any) {
throw error;
}
}
关于angular - Google Tag Manager JS 错误触发器不适用于 Angular App,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63017890/
我是一名优秀的程序员,十分优秀!