在我们的网站上,我们希望使用stacktracejs库跟踪所有JS错误。安装起来非常简单,我们在<head>
:
window.onerror = function(msg, file, line, col, error) {
// callback is called with an Array[StackFrame]
StackTrace.fromError(error).then(callback).catch(errback);
};
然后我们在页脚中包含Hubspot跟踪代码,如下所示:
<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/hs.js"></script>
注意async
和defer
- 在某些未知的时间点,Hubspot的脚本接管(重新分配给他们的功能)window.onerror
- 不考虑我的功能。根据我的理解,这是一个错误,并在其网站上报告:https://integrate.hubspot.com/t/tracking-code-overrides-window-onerror/1755
我的问题是 - 是否有可能以某种方式跟踪功能定义被覆盖?我知道我可以做settimeout()
,但我认为这是一个穷人的解决方案。如果你愿意,我正在寻找“自然”的方式 - 订阅通知或类似的东西。
答案 0 :(得分:3)
如果您希望没有人替换您的功能,您可以使用addEventListener
代替。
window.addEventListener('error', sendError)
答案 1 :(得分:0)
我建议您使用jQuery $ .getScript下载脚本,这样一旦脚本完全下载并包含在DOM中,就可以进行回调。
$.getScript( "//js.hs-scripts.com/hs.js" )
.done(function( script, textStatus ) {
alert("Success!");
})
.fail(function( jqxhr, settings, exception ) {
alert("Fail");
});