JavaScript 在window.onerror中报告“脚本错误”而无跨站脚本编写的情况下

JavaScript 在window.onerror中报告“脚本错误”而无跨站脚本编写的情况下

有时,在开发JavaScript应用程序时,您可能会遇到以下问题:即使没有涉及跨站脚本编写(XSS),也会报告“脚本错误”在window.onerror方法中。这可能令人沮丧,因为很难确定错误的原因以及如何修复它。

可能遇到的问题: 以下是此问题可能在您的代码中显现的示例:

Javascript

window.onerror = function (message, source, line, col, error) { 
    console.log(message); // "Script error." 
    console.log(source);  // "http://localhost:8080/scripts.js" 
    console.log(line);    // 0 
    console.log(col);     // 0 
    console.log(error);   // undefined 
}; 
  
function foo() { 
    var bar = 1; 
    console.log(baz);    // ReferenceError: baz is not defined 
} 
  
foo();

输出(错误): 当你运行这段代码时,你将在控制台中看到以下输出:

Script error.
http://localhost:8080/scripts.js
0
0
undefined

解决方案: 要解决这个问题,您可以尝试以下方法:

  • 检查您的代码是否存在语法错误或未定义的变量,这可能导致错误。如果您正在加载外部脚本,请确保它们托管在与您的主页面相同的域上,以避免任何跨站脚本攻击问题。
  • 如果您正在使用内容安全策略(CSP),请确保它允许执行内联脚本或使用eval()。
    使用try-catch块来捕获任何错误并为用户提供更有意义的错误消息。

这是一个修改先前代码以捕获错误并提供更有帮助消息的示例:

Javascript

window.onerror = function (message, source, line, col, error) { 
    console.log(message); 
    console.log(source); 
    console.log(line); 
    console.log(col); 
    console.log(error); 
}; 
  
function foo() { 
    try { 
        var bar = 1; 
        console.log(baz); // ReferenceError: baz is not defined 
    } catch (error) { 
        console.error("Error: " + error.message); 
    } 
} 
  
foo();

输出: 当你运行这个修改过的代码时,在控制台中会看到以下输出:

Error: baz is not defined

这提供了更有帮助的错误消息,准确地告诉你出了什么问题,更容易修复这个问题。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程