Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.onerror被第三方库覆盖-如何跟踪它以重新安装我的处理程序?_Javascript - Fatal编程技术网

Javascript window.onerror被第三方库覆盖-如何跟踪它以重新安装我的处理程序?

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的脚本接管(重新分配到其功能)

在我们的网站上,我们希望通过stacktracejs库跟踪所有JS错误。它的安装非常简单,我们在
中这样做:

然后,我们在页脚中包含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)