[英]Is there a way to “re-initialize” JavaScript after an error occurred?
我们目前正在使用以下代码来跟踪我们网站上的 javascript 错误:
window.onerror = function(message) {
log(message);
};
上面代码中的日志功能在控制台中为开发人员显示错误消息,但对普通用户不显示。 我们正在考虑为普通用户显示某种信息,然后在用户确认消息后重新加载页面。 然而,如果我们能找到一种方法来确保 javascript 即使在发生错误后也能继续工作,那就更好了。 所以我们想知道是否有办法“重新初始化” javascript 在发生错误后重新开始。 任何帮助,将不胜感激。 谢谢
抱歉,如果您已经尝试过,但是您是否尝试过“try catch”块?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch
这将允许它遇到错误,然后继续。 在“catch”块中,你可以做一些错误的事情,但你也可以在错误发生后运行其他代码。
没有内置方法可以重新初始化您的代码(除了重新加载页面),但您可以使用以下方法:
在window
object 中保存 object 键名的副本。 将您的起始代码包装在 function 中,并在启动时调用 function 一次。 如果您检测到错误,请从window
object 中删除所有未保存在原始副本中的键值对; 这将删除所有全局变量。 最后,再次调用您的初始化 function。
这在实施时可能会有一些复杂性,但在大多数情况下应该可以工作。
正如@That'sIs JustCrazy 所说,遗留的事件侦听器可能是一个问题,因此您还需要一种重置 DOM 的方法。 您可以在开头保存html
标记的原始内容的副本, const savedHTML = document.getElementsByTagName("html")[0].innerHTML
。 然后运行document.getElementsByTagName("html")[0].innerHTML = savedHTML
。 我记得在某处读过,删除带有事件侦听器的元素会导致 memory 在 IE 上泄漏,但在其他浏览器上没问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.