Prototipo de evento JavaScript en IE8

Estoy tratando de agregar un método para el prototipo de evento. Para llamar / configurarpreventDefault() o, en IE-hablarreturnValue = false y -si lo desea-stopPropagation() / cancelBubble = true;. Pensé que el código de abajo hubiera sido suficiente.

Event = Event || window.Event;
//^^ makes the fiddle work on IE8 ^^
if(!(Event.prototype.stopEvent))
{
    Event.prototype.stopEvent = function(propagate)
    {
        "use strict";
        propagate = (propagate ? true : false);
        if (this.preventDefault)
        {
            this.preventDefault();
            if (propagate === false)
            {
                this.stopPropagation();
            }
        }
        else
        {
            this.returnValue = false;
            this.cancelBubble = !propagate;
        }
        return this;
    };
}

Lo que parece funcionar,como puedes ver aquí. Este violín muestraOK En IE8, Firefox y Chrome. Sin embargo, cuando agrego esto a mi script, IE8 se rompe en la primera línea, diciendo'El evento no está definido'. Dejando fuera"use strict"; no hace ninguna diferencia en absoluto.

A regañadientes, también intenté esto:

if (typeof Event === 'undefined')
{
    var Event = window.Event || window.event;//FFS IE :-(
}

Pero fue en vano:Error: 'Event.prototype' is null or not an object, así que tengo 1 línea más. La cuestión es que el método prototipo completo es una copia pegada de mi script, pero ¿qué estoy pasando por alto aquí? ¿Alguna idea / sugerencia?
Gracias

PD: Me gusta Pure JavaScript, así que por favor, no sugiera jQuery, prototypejs, dojo, ... como una solución. Acabo de deshacerme de jQuery. (Me gusta jQuery, pero no es necesario en este caso)

Actualizar

Las cosas han dado un giro para peor, me temo. encontréesta referencia de MSDN. Toda la página trata sobre los prototipos de elementos DOM. Es bastante justo decir que están disponibles y se pueden usar en IE8 (hasta cierto punto). En esta página, este código llamó mi atención:

Event.prototype.stopPropagation = function ()
{
  this.cancelBubble = true;
};
Event.prototype.preventDefault = function ()
{
  this.returnValue = false;
};

Se puede encontrar ~ 3 / 4ths de la página abajo, en la sección titulada"Powerful Scenarios". Esto es, en mi opinión, exactamente lo mismo que quiero hacer, pero es más: si intento este código a través de jsfiddle, ni siquiera funciona, mientras que mi jsfiddle (con mi código) funcionó en IE8. Estas son solo las últimas líneas de un fragmento, pero en lo que puedo resolver, estas pocas líneas de código deberían funcionar bien. Los he alterado de la siguiente manera:

Event.prototype.stopPropagation = function ()
{
    if (this.stopPropagation)
    {
        return this.stopPropagation();
    }
    this.cancelBubble = true;
};
Event.prototype.preventDefault = function ()
{
    if (this.preventDefault)
    {
        return this.preventDefault();
    }
    this.returnValue = false;
};

Respuestas a la pregunta(2)

Su respuesta a la pregunta