videojs/video.js
在 GitHub 查看EventedMixin.off or Player.removeTechControlsListeners_ function has some logic error
Open
#4,627 建立於 2017年9月21日
confirmedhelp wanted
描述
Description
EventedMixin.off function has some logic error, you can see the detail in steps to reproduce
Steps to reproduce
1.Player: this.tech_ is undefined when this highlight statement run

2.EventedMixin.off : if targetOrType undefined and typeOrListener is eventType, I think the parameters adaptation logic is not handled in the right way

3.Events.of pass the wrong parameters

Results
Expected
remove the specified event type and listener
Actual
remove all player listener
Error output
no error output
Additional Information
<link href="../../../dist/video-js.css" rel="stylesheet">
<script src="../../../dist/ie8/videojs-ie8.js"></script>
<script src="../../../dist/video.js"></script>
<video id="player1" class="video-js vjs-default-skin" controls preload="auto" height="320" playsinline webkit-playinline>
</video>
<script>
var player = videojs('player1',{
sources: [{
src: '//www.streambox.fr/playlists/x36xhzz/x36xhzz.m3u8',
type: 'application/x-mpegURL'
}]
});
player.on('ready', function() {
console.log('player on ready');
});
player.on('error', function() {
console.log('player on error');
});
</script>
if error event triggered, the player ready listener will no fire, because player all event listener had been remove
I know I did not use the contrib-hls.
I modify EventedMixin.off function like that:
or modify Player removeTechControlsListeners_

versions
videojs
6.2.8
browsers
Chrome
OSes
windows 7 Mac OS X
plugins
no