2016-08-19 1 views
1

Ich dachte, ich wäre in der Lage, die test Veranstaltung zu schicken, indem Sie window.dispatchEvent(test) tun. Wenn ich den Ereignis-Listener von test in click ändere, wird der Alarm ausgelöst.Auslösen eines benutzerdefinierten Ereignisses innerhalb einer Funktion vergraben, aber an 'Fenster' gebunden

Was mache ich falsch?

var functionName = function() { 
    function functionName() { 

     // bind method 
     this.doSomething = this.doSomething.bind(this); 

     this.setupListeners(); 
    } 

    functionName.prototype.setupListeners = function setupListeners() { 
     window.addEventListener('test', this.doSomething); 
    }; 

    functionName.prototype.doSomething = function doSomething(event) { 
     alert('Hello!'); 
    }; 

    return functionName; 

}(); 
+0

https://www.sitepoint.com/javascript-custom-events/dies könnte hilfreich für Sie sein –

Antwort

1

Sie haben die event Objekt wie folgt zu erstellen:

var event = new Event('test'); 

// Dispatch the event. 
window.dispatchEvent(event); 

Siehe Arbeits Schnipsel:

var functionName = function() { 
 
    function functionName() { 
 

 
    // bind method 
 
    this.doSomething = this.doSomething.bind(this); 
 

 
    this.setupListeners(); 
 
    } 
 

 
    functionName.prototype.setupListeners = function setupListeners() { 
 
    window.addEventListener('test', this.doSomething); 
 
    }; 
 

 
    functionName.prototype.doSomething = function doSomething(event) { 
 
    alert('Hello!'); 
 
    }; 
 

 
    return functionName; 
 

 
}(); 
 

 
var myfun = new functionName(); 
 

 
var event = new Event('test'); 
 

 
// Dispatch the event. 
 
window.dispatchEvent(event);

Verwandte Themen