Last active
April 22, 2023 05:07
-
-
Save anjanesh/fda4de82fe22f82ba0db5caf08308968 to your computer and use it in GitHub Desktop.
Error Messages in Chrome vs FireFox
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1"> | |
<title>Error Messages in Chrome vs FireFox</title> | |
</head> | |
<body> | |
<script type="text/javascript"> | |
const DEBUG = true; | |
// Sample data hardcoded | |
let g_applications = | |
[ | |
{ | |
"name": "php", | |
"version": "8.2", | |
"is_outdated": false | |
}, | |
{ | |
"name": "php", | |
"version": "8.1", | |
"is_outdated": false | |
}, | |
{ | |
"name": "php", | |
"version": "8.0", | |
"is_outdated": false | |
}, | |
{ | |
"name": "php", | |
"version": "7.4", | |
"is_outdated": false | |
}, | |
{ | |
"name": "php", | |
"version": "7.2", | |
"is_outdated": false | |
}, | |
{ | |
"name": "wordpress", | |
"version": "6.2", | |
"is_outdated": false | |
}, | |
{ | |
"name": "wordpress", | |
"version": "6.1", | |
"is_outdated": false | |
}, | |
{ | |
"name": "wordpress", | |
"version": "5", | |
"is_outdated": false | |
}, | |
{ | |
"name": "Apache", | |
"version": "2.4.57", | |
"is_outdated": false | |
}, | |
{ | |
"name": "Apache", | |
"version": "2.3.9", | |
"is_outdated": false | |
}, | |
{ | |
"name": "Apache", | |
"version": "2.2", | |
"is_outdated": false | |
} | |
]; | |
let applications = {}; // This is going to be an object where each key would have an array | |
// Ideally this would come from response = fetch("api/applications"); | |
// But here we have hardcoded from pre-defining g_applications | |
let response = g_applications; | |
for (let i = 0; i < response.length; i++) | |
{ | |
// property is the key we are going to use for the applications object | |
let property = response[i]['name'].toLowerCase(); | |
try | |
{ | |
if (DEBUG) console.log("property = ", property); | |
if (DEBUG) console.log("version = ", response[i]['version']); | |
// Add the value (version) to the object of applications array | |
// Like for example : applications['php'].push('8.0'); | |
applications[property].push(response[i]['version']); | |
} | |
catch(e) | |
{ | |
// if applications['php'] doesn't exist, it'll get 'caught' in the try-catch block and it'll be assigned below | |
if ( | |
e.message.includes("Cannot read properties of undefined") || // Chrome | |
e.message.includes("applications[property] is undefined") || // FireFox | |
e.message.includes("undefined is not an object (evaluating 'applications[property].push'") // Safari | |
) | |
{ | |
applications[property] = [response[i]['version']]; | |
} | |
else | |
{ | |
console.error("error = ", e.message); | |
} | |
} | |
} | |
if (DEBUG) console.log("applications = ", applications); | |
/* | |
applications = | |
Object { php: (5) […], wordpress: (3) […], apache: (3) […] } | |
*/ | |
if (DEBUG) console.log("applications as JSON string = ", JSON.stringify(applications)); | |
// {"php":["8.2","8.1","8.0","7.4","7.2"],"wordpress":["6.2","6.1","5"],"apache":["2.4.57","2.3.9","2.2"]} | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment