Worker.js - Hiding global variables

by James Greene

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/json2/20121008/json2.js"></script>

JavaScript

window.onerror = function(message, fileName, lineNo, colNo, error) {
    message = typeof message !== "undefined" && message !== null ? message : "{{undefined}}";
    fileName = typeof fileName !== "undefined" && fileName !== null ? fileName : "{{undefined}}";
    lineNo = typeof lineNo !== "undefined" && lineNo !== null ? lineNo : "{{undefined}}";
    colNo = typeof colNo !== "undefined" && colNo !== null ? colNo : "{{undefined}}";
    error = typeof error !== "undefined" && error !== null ? error : "{{undefined}}";
    
    console.log("WINDOW.ONERROR!\nMessage: " + message + "\nFile: " + fileName + "\nLine: " + lineNo + "\nColumn: " + colNo + "\nError: " + error);
};

var messages = [];

try {
    function top() { }
    var top = undefined;
    if (typeof top === "undefined" &&
        typeof window.top === "undefined" &&
        typeof this.top === "undefined")
    {
        messages.push("Successfully hid: `top`");
    }
    else {
        messages.push("Failed to hide: `top`");
    }
}
catch (e) {
    messages.push("ERROR! Died while trying to hide `top`.\n" + e);
}

try {
    function opener() { }
    var opener = undefined;
    if (typeof opener === "undefined" &&
        typeof window.opener === "undefined" &&
        typeof this.opener === "undefined")
    {
        messages.push("Successfully hid: `opener`");
    }
    else {
        messages.push("Failed to hide: `opener`");
    }
}
catch (e) {
    messages.push("ERROR! Died while trying to hide `opener`.\n" + e);
}

try {
    function parent() { }
    var parent = undefined;
    if (typeof parent === "undefined" &&
        typeof window.parent === "undefined" &&
        typeof this.parent === "undefined")
    {
        messages.push("Successfully hid: `parent`");
    }
    else {
        messages.push("Failed to hide: `parent`");
    }
}
catch (e) {
    messages.push("ERROR! Died while trying to hide `parent`.\n" + e);
}

try {
    function eval() { }
    var eval = undefined;
    if (typeof eval ===...