Javascript window.onerror被第三方库覆盖-如何跟踪它以重新安装我的处理程序?
在我们的网站上,我们希望通过stacktracejs库跟踪所有JS错误。它的安装非常简单,我们在Javascript window.onerror被第三方库覆盖-如何跟踪它以重新安装我的处理程序?,javascript,Javascript,在我们的网站上,我们希望通过stacktracejs库跟踪所有JS错误。它的安装非常简单,我们在中这样做: 然后,我们在页脚中包含Hubspot跟踪代码,如下所示: <script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/hs.js"></script> 注意async和defer-在某些未知时间点,Hubspot的脚本接管(重新分配到其功能)
中这样做:
然后,我们在页脚中包含Hubspot跟踪代码,如下所示:
<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/hs.js"></script>
注意async
和defer
-在某些未知时间点,Hubspot的脚本接管(重新分配到其功能)窗口。OneError
-而不考虑我的功能。据我所知,这是一个bug,并且在他们的网站上有报道:
我的问题是-是否有可能以某种方式跟踪函数定义被重写?我知道我可以做
settimeout()
,但我认为这是穷人的解决方案。如果您愿意,我正在寻找“自然”的方式-订阅通知或类似的东西。我建议您使用jQuery$.getScript之类的东西下载脚本。这样,一旦脚本完全下载并包含在DOM中,您就可以进行回调
$.getScript( "//js.hs-scripts.com/hs.js" )
.done(function( script, textStatus ) {
alert("Success!");
})
.fail(function( jqxhr, settings, exception ) {
alert("Fail");
});
如果您希望没有人替换您的函数,可以使用
addEventListener
window.addEventListener('error', sendError)
是的,来自其他第三方的window.onerror也可以工作。但我认为他们也可以使用addEventListener来避免这些问题
window.addEventListener('error', sendError)