javascript - Remove event listener from the inside if specified callback function -
i have situation, want attach function parameters event listener, this:
var pauseaudioat = function(aud, seconds, removelistener) { console.log(aud.currenttime); // check whether have passed 5 minutes, // current time given in seconds if(aud.currenttime >= seconds) { // pause playback aud.pause(); if (removelistener) { aud.removeeventlistener('timeupdate', pauseaudioat); showbtn(); } } } audio.addeventlistener("timeupdate", function() { pauseaudioat(audio, 18, true); });
i want remove listener function invoked? how can achieve ?
thanks.
you have pass .removeeventlistener()
reference same function passed .addeventlistener()
. 1 way minimal change existing code name (currently anonymous) function expression, pass function pauseaudioat()
instead of passing boolean:
var pauseaudioat = function(aud, seconds, listenertoremove) { console.log(aud.currenttime); // check whether have passed 5 minutes, // current time given in seconds if(aud.currenttime >= seconds) { // pause playback aud.pause(); if (typeof listenertoremove === "function") { aud.removeeventlistener('timeupdate', listenertoremove); showbtn(); } } } audio.addeventlistener("timeupdate", function listener1() { pauseaudioat(audio, 18, listener1); });
that way, pauseaudioat()
doesn't need hardcoded reference function needs removed.
if want call pauseaudioat()
without removing listener omit argument: pauseaudioat(audio, 18)
- or pass false
or null
or if that's more convenient: pauseaudioat(audio, 18, null)
.
(if want able call pauseaudioat()
other part of code and remove listener combine function declaration shown in jaromanda x's answer.)
Comments
Post a Comment