我在我网站的所有网页上都有此代码来跟踪javascript错误
<script>
window.addEventListener('error', function(event) {
if (!window.XMLHttpRequest && !window.JSON) {
return;
}
if (!event.filename || !event.filename.includes("mywebsite.com")) {
// Exclude external scripts
return;
}
var httpRequest = new XMLHttpRequest();
httpRequest.open('POST', '/post-js-error', true);
httpRequest.setRequestHeader('Content-Type', 'application/json');
httpRequest.send(JSON.stringify(event));
});
</script>
第二个if语句用于排除与我的代码无关的各种错误的噪音(人们拥有的浏览器插件,我在网站上安装的外部脚本等)
这里发生了什么:除了一个案例之外,排除目前还算得很好。我从googlebots收到错误(用户代理&#34; Mozilla / 5.0 AppleWebKit / 537.36(KHTML,如Gecko;兼容; Googlebot / 2.1; + http://www.google.com/bot.html)Safari / 537.36&#34;)。我得到的文件名是一个空字符串。 错误不应该传递条件if(!event.filename)但它确实如此。
为什么?