javascript - 如何以编程方式确定某些 JavaScript 代码是否失败或生成错误

标签 javascript html

我在网页上嵌入了一些 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);
});

确保您还包装了所有事件处理程序(以及 setTimeoutsetInterval)。

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/

相关文章:

html - 在桌面/移动设备上不显示

javascript - Jquery Json错误,来自steam的json,Access-Control-Allow-Origin

javascript - 如何编辑 Amcharts X 轴?

html - 鼠标悬停时淡入淡出并显示文本 img

html - 溢出:隐藏;保留内容宽度但隐藏内容:Chrome

javascript - 该数组不适用于我的图片输出

javascript - 如何防止CKEDITOR自动保存textarea/contenteditable内容

javascript - 如何将多个参数发送到 WebGL 上的顶点着色器?

javascript - 如何使用 javascript 防止跨站点脚本

javascript - 为什么我不能垂直对齐我的 p 标签?