我在网页上嵌入了一些 JavaScript 代码。尽管进行了跨浏览器测试以确保 JavaScript 在不同操作系统和 Web 浏览器的矩阵上运行,但 JavaScript 在野外执行期间仍可能失败。
有没有一种方法可以确定某些 JavaScript 何时失败,然后记录该事件以及一些 session 上下文,以提供有关发生的事情的一些信息?我知道 JavaScript <noscript>
标记,以及 no-js
HTML5 中的样式,但我更关心 JavaScript 何时尝试运行但遇到问题。
本质上,我想找出我的 JavaScript 代码何时无法执行,这样我就可以更多地了解发生了什么并主动解决问题。商业解决方案是可以接受的。
到目前为止,我找到的最接近的解决方案是 Jamey Sharp's method to set a global variable in JavaScript, then check the value of that variable in a later JavaScript .
最佳答案
将所有代码包装在一个
中try {
[code]
} catch (e) {
[handle error]
}
这可以很简单:
function error_wrap(callback) {
try { callback(); } catch (e) {
// do ajax to report error
}
}
error_wrap(function () {
// my code
});
困难的部分是事件。无论何时发生事件,都不会捕获错误。
error_wrap(function () {
setTimeout(function () {
throw new Error("nope"); // this error will not be caught
}, 1);
});
确保您还包装了所有事件处理程序(以及 setTimeout
和 setInterval
)。
在 setTimeout
情况下,它看起来像:
function wrappedSetTimeout(callback, ms) {
return setTimeout(function () { // wrap the function again because we don't want to execute it yet
error_wrap(callback);
}, ms);
}
关于javascript - 如何以编程方式确定某些 JavaScript 代码是否失败或生成错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22818034/