Open In App

“Script error” reported in window.onerror without cross-site scripting

Last Updated : 03 Apr, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Sometimes, when developing a JavaScript application, you might encounter an issue where a “Script error” is reported in the window.onerror method, even though there is no cross-site scripting (XSS) involved. This can be frustrating because it can be difficult to determine the cause of the error and how to fix it.

The problem you may encounter: Here is an example of how this problem might manifest in your code:

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();


Output(Error): When you will run this code, you will see the following output in the console:

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

 

Solution: To solve this issue, you can try the following approach:

  • Check your code for any syntax errors or undefined variables that might be causing the error. If you are loading external scripts, make sure they are hosted on the same domain as your main page to avoid any cross-site scripting issues.
  • If you are using a content security policy (CSP), make sure it allows for the execution of inline scripts or the use of eval().
    Use a try-catch block to catch any errors and provide a more meaningful error message to the user.

Here is an example of how you could modify the previous code to catch the error and provide a more helpful message:

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();


Output: When you run this modified code, you will see the following output in the console:

Error: baz is not defined

This provides a more helpful error message that tells you exactly what went wrong, making it easier to fix the issue.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads